-
Python 2차원 리스트(배열) 초기화알고리즘관련/공부하기 2021. 8. 1. 23:41
파이썬에서 2차원 이상의 리스트를 초기화할땐
list = [[0]*n for _ in range(n)] 와 같이 해야한다.
list = [[0]*n]*n 처럼 초기화를 할 경우 n개의 [0]*n이 모두 같은 객체를 가리키기 때문이다.
ex)
n = 4
# case 1
list_1 = [[0]*n]*n
print(list_1)
list_1[2][3] += 1
print(list_1)
"""
<case 1 결과>
[[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]]
[[0, 0, 0, 1], [0, 0, 0, 1], [0, 0, 0, 1], [0, 0, 0, 1]]
"""
# case 2
list_2 = [[0]*n for _ in range(n)]
print(list_2)
list_2[2][3] += 1
print(list_2)
"""<case 2 결과>
[[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]]
[[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 1], [0, 0, 0, 0]]"""
헷갈리기 쉬운 개념이기 때문에 반드시 숙지해야 한다.
'알고리즘관련 > 공부하기' 카테고리의 다른 글
20210811 DFS (0) 2021.08.11 2021080 (0) 2021.08.09 리스트 컴프리핸션(list comprehension)을 이용한 리스트 만들기 (0) 2021.07.27 2021-07-02 알고리즘 분석과 차수 (0) 2021.07.02 2021-07-01 (0) 2021.07.01