리스트를
lst=[[0]]*51
을 통해 초기화 하셨는데, 이렇게 초기화를 하시면 모든 요소가 '얕은 복사'를 통하여
>>> id(lst[0])
2356049362112
>>> id(lst[1])
2356049362112
>>> id(lst[2]) 2356049362112
모두 같은 메모리 주소를 가지게 되고 모든 요소가 같은 값을 가지게 되므로 1번째 index에 값을 바꾸셔도 메모리 주소가 같기 때문에 모든 요소가 바뀌게 됩니다.
따라서
>>> lst = [[0] for i in range(51)] >>> lst[1].append('cl') >>> lst [[0], [0, 'cl'], [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], [0], [0], [0], [0], [0], [0], [0], [0], [0], [0], [0], [0], [0], [0], [0], [0], [0], [0], [0], [0], [0], [0]]
와 같은 방법으로 초기화 및 선언을 하신다면 원하시는 방법으로 구현 가능하게 됩니다.
bfinecpa 2년 전
lst[1]에만 append되어야 하는데 모든 리스트에서 append 됩니다 왜 그런지 알 수 있을까요?