[python] 2차원 리스트 사용하기

anjiyoo·2024년 3월 6일

Python

목록 보기
22/41
post-thumbnail

1.2차원 리스트

  • 가로 x 세로 형태로 이루어져 있음
  • 행과 열 모두 0부터 시작

1-1.2차원 리스트 요소 접근

# 3x2 2차원 리스트
리스트 = [[값,값], [값,값], [값,값]]
a = [[10, 20],
	[30, 40],
    [50, 60]

1-2.2차원 리스트 요소에 값 할당

리스트[세로인덱스][가로인덱스]
리스트[세로인덱스][가로인덱스] = 값
a = [[10,20], [30,40], [50,60]]
a[0][0]     # 세로 인덱스0, 가로인덱스0인 요소 출력

1-3.2차원 함수 사각형 구조로 출력하기

  • pprint 함수 사용하기
from pprint import pprint
pprint(리스트명, indent=들여쓰기칸수, width=가로폭)

2.2차원 튜플

  • 튜플은 내용을 변경할 수 없어서 바깥쪽 안쪽 모두 요소 변경 불가
튜플 = ((값,값), {값,값), (값,값))
튜플 = ([값,값], [값,값], [값,값])
리스트 = [(값,값), {값,값), (값,값)]

3.반복문으로 2차원 리스트 요소 모두 출력하기


3-1.for 반복문을 한 번만 사용하기

  • 2차원 리스트의 가로 크기가 크지 않을 때 사용
a = [[10,20], [30,40], [50,60]]
for x,y in a:       # 리스트의 가로 한 줄(안쪽 리스트)에서 요소 두 개 꺼냄
	print(x,y)

3-2.for 반복문을 두번 사용하기

a = [[10,20], [30,40], [50,60]]
for i in a:       # a에서 안쪽 리스트를 꺼냄
	for j in i:   # 안쪽 리스트에서 요소를 하나씩 꺼냄
    	print(j, end='')
    print()

3-3.for와 range 사용하기

  • 바깥쪽 리스트, 안쪽 리스트에 맞는 길이 값이 반환
# 요소에 접근할 때
리스트[세로인덱스][가로인덱스]
for i in range(len(a)):       # 세로크기
for j in range(len(a[i])):    # 가로크기
a = [[10,20], [30,40], [50,60]]
for i in range(len(a)):       # 세로크기
	for j in range(len(a[i])):   # 가로크기
    	print(a[i][j], end='')
    print()

4.while 반복문을 한 번만 사용하기

a = [[10,20], [30,40], [50,60]]

i = 0
while i < len(a):   # 반복할 때 리스트의 크기 활용(세로 크기)
	x,y = a[i]      # 요소 두 개를 한꺼번에 가져오기
    print(x,y)
    i += 1          # 인덱스를 1 증가시킴

4-1.while 반복문을 두 번 사용하기

a = [[10,20], [30,40], [50,60]]

i = 0
while i < len(a):   # 가로 크기
	j = 0     
    while j < len(a):  # 세로 크기
    	print(a[i][j], end='')
        j += 1  # 가로 인덱스 1 증가
    print()
    i += 1  # 세로 인덱스 1 증가

5.반복문으로 리스트 만들기

5-1.for 반복문으로 1차원 리스트 만들기

a = []  # 빈 리스트 생성

for i in range(10):
	a.append(0)  # append로 요소 추가
print(a)

5-2.for반복문으로 2차원 리스트 만들기

a = []  # 빈 리스트 생성

for i in range(3):
	line = []           # 안쪽 리스트로 사용할 빈 리스트 생성
    for j in range(2):
    	line.append(0)  # 안쪽 리스트에 0 추가
     a.append(line)     # 전체 리스트에 안쪽 리스트를 추가
print(a)

5-3.리스트 표현식으로 2차원 리스트 만들기

a = [[0 for j in range(2)] for i in range(3)]

6.톱니형 리스트 만들기

  • 가로 크기가 불규칙한 리스트
a = [3, 1, 3, 2, 5]  # 가로 크기를 저장한 리스트
b = []  # 빈 리스트 생성

for i in a:  # 가로 크기를 저장한 리스트로 반복
	line = []  # 안쪽 리스트로 사용할 빈 리스트 생성
    for j in range(i):  # 리스트 a에 저장된 가로 크기만큼 반복
    	line.append(0)
    b.append(line)  # 리스트 b에 안쪽 리스트를 추가
print(b)

6-1.리스트 표현식으로 톱니형 리스트 만들기

a = [[0 for j in range(2)] for i in [3, 1, 3, 2, 5]]

7.sorted 함수로 2차원 리스트 정렬하기

sorted(반복가능한객체, key=정렬함수, reverse=True 또는 False)
students = [
	['john', 'C', 19],
    ['maria', 'A', 25],
    ['andrew', B', 7]
]

print(sorted(students, key=lambda student: student[1])) # 안쪽 리스트의 인덱스 1을 기준으로 정렬
print(sorted(students, key=lambda student: student[2])) # 안쪽 리스트의 인덱스 2을 기준으로 정렬

8.2차원 리스트의 할당과 복사

  • 리스트를 다른 변수에 할당해도 변수이름만 달라지고 같은 리스트(객체)임
a = [[10,20], [30,40]]
import copy  # copy 모듈을 가져옴
b = copy.deepcopy(a)  # copy.deepcopy 함수를 사용하여 깊은 복사
b[0][0] = 500
profile
기록으로 흔적을 남기는 것을 좋아합니다

0개의 댓글