python | for 또는 *를 사용해 2차원 리스트 생성 시 주의할 부분(얕은 복사 개념)
·
TIL/python
평소와 똑같이 백준 문제를 풀고 있던 중 리스트를 만들다가 이상한 점을 발견했다. 리스트 안에 빈 리스트를 3개를 만들기 위해 다음과 같이 코드를 작성했다. A = [[] for _ in range(3)] B = [[]] * 3 A, B를 출력해 보면 [ [ ], [ ], [ ] ] 이런 형태의 2차원 리스트가 만들어지는 것을 볼 수 있다. 똑같아 보이지만 A, B는 차이가 있다. 이 차이는 값을 추가하거나 변경할 때 볼 수 있다. 다음과 같이 각 리스트의 0번 인덱스, 즉 0번 리스트에 1을 추가할 것이다. A[0].append(1) B[0].append(1) 위 코드로 우리가 의도하는 결과는 [ [1], [ ], [ ] ]이다. 하지만 실제로 A와 B를 출력해 보면 두 결과는 다른 것을 볼 수 있다...