without haste but without rest
[python] [ [0] * n ] * m 과 [ [0] * n for _ in range(m) ] 의 차이 본문
ProgrammingLanguage/Python
[python] [ [0] * n ] * m 과 [ [0] * n for _ in range(m) ] 의 차이
JinungKim 2021. 4. 28. 23:04코드가 틀린 곳이 없는데 왜 자꾸 출력이 에상과 다른가 하니
[ [0] * n for _ in range(m) ] 이 아니라 [ [0] * n ] * m 형태로 자료구조를 선언 해두었다.
1. [ [0] * n for _ in range(m) ]
2. [ [0] * n ] * m
2번은 배열 안에 배열들을 선언하는 게 아니라 각각 배열들을 선언한다.
1번은 배열 안에 2차원 배열을 선언한다.
따라서 2번처럼 선언하고 2차원배열에 값을 넣으면 2차원 좌표가 아니라 모든 배열에 동시에 같은 값을 넣게 된다.
아래 코드를 실행 해보면 바로 감이 온다.
출력 해줄때 같은 것처럼 보이는데 전혀 다르다.
a = [[0] * 2] * 3
b = [[0] * 2 for _ in range(3)]
a[0][0] = 1
b[0][0] = 1
print(a)
print(b)
# 출력
[[1, 0], [1, 0], [1, 0]]
[[1, 0], [0, 0], [0, 0]]
'ProgrammingLanguage > Python' 카테고리의 다른 글
[python] csv 헤더 패스하기 (0) | 2021.05.11 |
---|---|
[python] 날짜 계산 (0) | 2021.05.06 |
[python] 달의 마지막 일자 구하기 (0) | 2021.02.16 |
bson 데이터 json 변환 스크립트 (0) | 2021.02.05 |
[python] json dump 메소드 사용시 한글 깨짐 현상 (0) | 2021.02.05 |
Comments