코딩도장 python 23장
23장. 2차원 리스트 사용하기
2차원 리스트
- 가로 * 세로 형태로 이루어져 있으며, 행과 열 모두 0부터 시작한다
1
2
3
4
5
6
7
8
9
10
| a = [[10,20], [30,40], [50,60]]
# 2차원 리스트 생성
a[0][0]
>>> 10
# 세로 인덱스 0, 가로 인덱스 0인 요소 출력
a[2][1]
>>> 60
# 세로 인덱스 2, 가로 인덱스 1인 요소 출력
|
톱니형 리스트
- 가로 크기가 불규칙한 리스트
- append 메서드 등을 사용해여 동적으로 생성할 수 있다
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
| a = [[10, 20],
[500, 600, 700],
[9],
[30, 40],
[8],
[800, 900, 1000]]
# append를 이용한 톱니형리스트 동적 생성
a = []
a.append([])
a[0].append(10)
a[0].append(20)
a.append([])
a[1].append(500)
a[1].append(600)
a[1].append(700)
print(a)
>>>
[[10, 20], [500, 600, 700]]
|
2차원 튜플
- 튜플안에 튜플, 튜플안에 리스트, 리스트안에 튜플을 넣는 방식 등이 가능
튜플 = ((값, 값), (값, 값), (값, 값))
1
2
| a = ((10,20), (30,40), (50,60))
# 튜플은 내용을 변경할 수 없으므로 안쪽 바깥쪽 모두 요소를 변경할 수 없다
|
튜플 = ([값, 값], [값, 값], [값, 값])
1
2
| b = ([10,20], [30,40], [50,60])
# 안쪽 리스트반 요소를 변경할 수 있다
|
리스트 = [(값, 값), (값, 값), (값, 값)]
1
2
| c = [(10,20), (30,40), (50,60)]
# 바깥쪽 리스트만 요소를 변경할 수 있다
|
2차원 리스트 요소를 모두 출력
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
| a = [[10, 20], [30, 40], [50, 60]]
# for문 한번만 사용해서 출력
for x, y in a:
print(x, y)
>>> 10 20
>>> 30 40
>>> 50 60
# for문 두번 사용하기
for i in a:
for j in i:
print(j, end=" ")
print()
# range에 세로와 가로크기를 지정해서 요소를 인덱스로 접근
for i in range(len(a)):
for j in range(len(a[i])):
print(a[i][j], end=" ")
print()
|
반복문으로 2차원 리스트 만들기
1
2
3
4
5
6
7
8
9
| a = []
for i in range(3):
b = []
for j in range(2):
b.append(0)
a.append(b)
print(a)
|
sorted로 2차원 리스트 정렬하기
1
2
3
4
5
6
7
8
| student = [
['john', 'c', 19],
['maria', 'a', 25],
['andrew', 'b', 7]
]
print(sorted(students, key=lamda student: student[1]))
# 안쪽 리스트의 인덱스 1을 기준으로 정렬
|
할당 & 복사
1
2
3
4
5
| a = [[10,20], [30,40]]
import copy
b = copy.deepcopy(a)
b[0][0] = 500
# 2차원 이상의 다차원 리스트는 리스트를 완전히 복사하려면 copy메서드 대신 copy모듈의 deepdopy 함수를 사용해야 한다
|