Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | ||||
| 4 | 5 | 6 | 7 | 8 | 9 | 10 |
| 11 | 12 | 13 | 14 | 15 | 16 | 17 |
| 18 | 19 | 20 | 21 | 22 | 23 | 24 |
| 25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- JavaScript
- Python
- jest
- class
- 게임
- Bull
- Queue
- nodejs
- 공룡게임
- Dinosaur
- AWS
- 정렬
- game
- nestjs
- cookie
- typeORM
- OCR
- mongoose
- react
- MySQL
- Sequelize
- TypeScript
- 자료구조
- Nest.js
- dfs
- Express
- MongoDB
- flask
- GIT
Archives
- Today
- Total
포시코딩
리스트 초기화 방법과 리스트 컴프리헨션 활용 본문
728x90
개요
graph1 = [[], [], []]
graph2 = [[]] * 3
print('graph1: ', graph1) # graph1: [[], [], []]
print('graph2: ', graph2) # graph2: [[], [], []]
graph1[1].append(4)
graph2[1].append(4)
print('graph1: ', graph1) # graph1: [[], [4], []]
print('graph2: ', graph2) # graph2: [[4], [4], [4]]
혼자 공부하다 이상한걸 발견했는데
위 코드처럼 생김새가 같은 graph1, graph2가 같은 코드에 대해 각기 다른 결과를 내고 있었다.
javascript에서 겪은 경험을 토대로 graph2는 안의 요소인 각 리스트가 다 같은 리스트를 참조하고 있어
하나에 값을 추가해도 모두 같은 리스트라 전부 추가된다는 것을 유추할 수 있었다.
그럼 항상 직접 리스트를 직접 써서 만들어줘야 하냐?
3개라면 직접 작성해도 금방 작성해서 문제가 없지만
리스트 개수가 더 많거나 상황에 따라 달라질 경우에는 문제가 된다.
해결
graph = [[] for _ in range(3)]
print('graph: ', graph) # graph: [[], [], []]
graph[1].append(4)
print('graph: ', graph) # graph: [[], [4], []]
위 문제는 리스트 컴프리헨션을 쓰면 간단히 해결된다.
이럴 경우 각 리스트 요소들은 각기 다른 리스트로 생성되기 때문에 위에서 겪은 문제가 발생하지 않는다.
728x90
'Python' 카테고리의 다른 글
| [Python] 소수점 n 자리까지 출력 (0) | 2023.05.16 |
|---|---|
| [Python] 재귀함수 제한 높이기(setrecursionlimit) (0) | 2023.04.25 |
| [Python] max에 조건 달기 (0) | 2023.04.23 |
| 집합 자료형 set (0) | 2022.12.27 |
| lambda, map() (0) | 2022.12.25 |