[Python] DP 2차원 리스트를 만들 때 주의할 점

love&peace·2024년 12월 22일

python

목록 보기
1/1

코딩테스트 DP문제를 풀다가 2차원 리스트를 초기화 할 때 문제가 발생하여 이를 기억하기 위해 포스트를 작성합니다!

[[0 for _ in range(3)] for _ in range(2)] , [[0]*3]*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]]

추가) [0] * 3는 독립적입니다

숫자(immutable type) 이기 때문에 독립적입니다!

결론

[0] * 3: 각 요소가 숫자(immutable)라서 독립적
[[0] * 3] * 2: 리스트 객체를 복제하므로 독립적이지 않음 (공유)
[[0 for _ in range(3)] for _ in range(2)]: 각 행이 새롭게 생성되므로 독립적

0개의 댓글