Python 코딩도장

23장

Posted by 동식이 블로그 on January 11, 2019

코딩도장 python 23장

23장. 2차원 리스트 사용하기

2차원 리스트

  • 가로 * 세로 형태로 이루어져 있으며, 행과 열 모두 0부터 시작한다

img

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 함수를 사용해야 한다