안녕하세요. 궁금증연구소입니다.
오늘 포스팅 주제는 "파이썬에서 2차원 배열 리스트 초기화는 리스트 컴프리헨션 이용"입니다.
파이썬에는 리스트컴프리헨션이라는 매우 유용한 문법이 있습니다.
예를 들어 row = 3, column = 4 인 모든 값이 0인 2차원 리스트 배열을 만들 때
array = [[0]*m for _ in range(n)]
n = 3
m = 4
arry = [[0]*m for _ in range(n)]
arry[1][1] = 5
print(arry)
당연히 3*4의 0으로 가득 찬 2차원 배열이 만들어질 것입니다. 이중 [1][1]에 해당하는 값만 5로 바뀌겠지요.
그러나, 만약 이와 같이 리스트 컴프리헨션을 통해서 2차원 배열을 만들지 않았을 경우
n=3
m=4
array = [[0]*m]*n
print(array)
array[1][1] = 5
print(array)
위 코드의 결과는 어떻게 될까요?
이와 같이 배열 3곳의 인덱스 1번째 값이 모두 5로 변화합니다.
배열 내부의 3개의 리스트는 결국 같은 리스트를 가리키는 레퍼런스입니다.
즉, 2차원 리스트 초기화 시에는 반드시 리스트 컴프리헨션을 활용해야 합니다.
파이썬 얕은 복사와 깊은복사 개념 정리 (0) | 2022.12.03 |
---|---|
파이썬 and & 차이점 (0) | 2022.11.25 |
pandas 데이터분석 머신러닝<오승환> ch02 정리 (0) | 2022.11.20 |
파이썬 머신러닝 판다스 데이터분석 chapter1 정리 (0) | 2022.11.19 |
ipython3 소스파일 로드, 저장방법 (0) | 2022.07.26 |