array = [[0]*8]*5
최근에 파이썬 코드를 작성하며 위와 같이 2차원 배열을 생성했다.
값을 할당하면, array[0][0], array[1][0], array[2][0] ... 의 값이 공유되는 문제가 있었다.
원인을 찾아보니
곱하기로 2차원 리스트를 만들면 리스튼는 참조로 복사된다. (실제로는 같은 객체라는 얘기)
같은 주소를 참조하기 때문에, array[0][0]에 값을 할당하면 그 값을 공유하는 문제가 발생했던 것이다.
따라서 리스트 컴프리헨션을 사용해서 아래와 같이 배열을 생성하여야 한다.
array = [0 for _ in range(8)] for _ in range(5)]
지금이라도 알게되어서 참 다행이다..!