코딩테스트 DP문제를 풀다가 2차원 리스트를 초기화 할 때 문제가 발생하여 이를 기억하기 위해 포스트를 작성합니다!
두 결과물은
[ [0, 0, 0],
[0, 0, 0] ]
로 같습니다. 그런데 중요한 차이점이 있습니다
바로 독립성 여부 입니다!
matrix[0][1] = 1 를 하면
# [[0 for _ in range(3)] for _ in range(2)]
# -> [[0, 1, 0], [0, 0, 0]]
#[[0]*3]*2
# -> [[0, 1, 0], [0, 1, 0]]
숫자(immutable type) 이기 때문에 독립적입니다!
[0] * 3: 각 요소가 숫자(immutable)라서 독립적
[[0] * 3] * 2: 리스트 객체를 복제하므로 독립적이지 않음 (공유)
[[0 for _ in range(3)] for _ in range(2)]: 각 행이 새롭게 생성되므로 독립적
✨