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
- nodejs
- flask
- game
- GIT
- 정렬
- class
- MongoDB
- typeORM
- Dinosaur
- 공룡게임
- nestjs
- Python
- OCR
- JavaScript
- Nest.js
- Queue
- 게임
- 자료구조
- mongoose
- Express
- Bull
- react
- dfs
- TypeScript
- AWS
- Sequelize
- MySQL
- cookie
- jest
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 |