✏️ 곱하기를 이용한 2차원 리스트
n,m = 2,2
a_list = [[-1]*m]*n
print(a_list)
a_list를 출력해보면 아래와 같이 확인할 수 있다.
a_list : [[-1, -1], [-1, -1]]
여기서 원소 값을 변경해보자.
n,m = 2,2
a_list = [[-1]*m]*n
print(a_list)
a_list[0][0] = 1
a_list[0][0] = 1 은 [[-1, -1], [-1, -1]] 에서 0행 0열을 1로 변경하는 코드다.
다시 a_list를 출력해보자.
n,m = 2,2
a_list = [[-1]*m]*n
print(a_list)
a_list[0][0] = 1
print(a_list)
a_list를 출력해보면 아래와 같이 모든 행의 0열 값이 1로 변경된 것을 확인할 수 있다.
a_list : [[1, -1], [1, -1]]
❓ 왜일까
✅ 2차원 리스트 선언시 '곱셉'을 사용하면 '얕은 복사(shallow copy)'로 만들어진다.
✅ 따라서 '같은객체'로 곱하기한만큼 만들어진다는 말이다.
❓ 그렇다면 어떻게 2차원 배열을 선언할까?
'리스트 컴프리헨션'을 사용하면 된다.
n,m = 2,2
a_list = [[-1]*m for _ in range(n)] # 리스트 컴프리헨션 사용
print(a_list)
a_list[0][0] = 1
print(a_list) # 출력 : [[1, -1], [-1, -1]]
'Python' 카테고리의 다른 글
| [Python] 우선순위 큐(Priority Queue), 힙(Heap) (0) | 2023.04.12 |
|---|---|
| [Anaconda/jupyter notebook] 아나콘다/주피터 노트북 설치 (0) | 2023.03.05 |
| [PyCharm] 파이참 설치 및 프로젝트 생성 (0) | 2023.03.05 |
| 파이썬(Python) 개발 환경 툴 차이 (0) | 2023.02.24 |










