n = 2
g1 = [[0] * (n + 1)] * (n + 1)
g1[1][2] = 1
print(g1)
g2 = [[0 for _ in range(n + 1)] for _ in range(n + 1)]
g2[1][2] = 1
print(g2)
위의 코드에서 g1 과 g2가 어떻게 바뀔지 알겠나요?
g1과 g2 모두 2차원 배열을 만드는 것이고, 3*3 의 2차원 배열이 만들어집니다.
그러나 다음 g1[1][2] =1 , g2[1][2] =1 을 코드를 실행했을때 다른 결과값이 보여집니다.
이유는 저 list * 연산은 새로운 list를 만드는 것이 아니고, 기존 리스트를 복사하기 때문에 실제로는 똑같은 리스트를 여러개 붙여 놓은것입니다.
그래서 g1[1][2] = 1 을 했지만,
모두 수정된 것을 확인하실수 있습니다.
'dev > 프로그래밍' 카테고리의 다른 글
서버별 ElapsedTime 그래프로 그리기(feat : ggplot2) (0) | 2019.12.31 |
---|---|
C# UGrid Header checkBox 제거 (0) | 2019.11.29 |
java Debuging 시 xml 보는 코드 (0) | 2019.11.11 |
encodeURIComponent (0) | 2018.01.16 |