목록*의 동작

2248 단어 Python

개시하다


며칠 전에 본 트위터.
파이썬에서 >a=[0]*3]a[0][0] = 1은 [1,0,0], [0,0]도 [1,1], [1,1], [1,1],] [1,0], [1,0], [1,0], [1,0], [1,0], [1,0], [1,0], [1,0], [1,0], [1,0], [1,0], [1,0], [1,0], [1,0], [1,0], [1,0],Hideyuki Tanaka (@tanakh) 2018년 3월 26일
내가 이렇게 된 이유를 설명해 줄게.

[0]


일단이렇게 쓰면 무슨 뜻이죠?그림으로 쓰는 것이 바로 이 뜻이다.

그렇지 않다'는 그림도 쓰고 싶었지만 귀찮아서 포기했다.
즉 [0]는 상자 안에 0이 있는 것이 아니라 상자 안에 0이라는 실체가 있다는 참고 정보를 가리킨다.

[0]*3


다음은 [0]*3시에 할 수 있는 것.

네, 여기가 중요해요.1요소, 2요소, 3요소는 모두 같은 0의 실체를 가리킨다.

[[0]*3]*3


그럼 문제[0]*3]*3.

세 가지 요소의 목록에서 각각 [0]*3이라는 목록의 실체를 가리킨다.

a[0][0]=1


그렇다면 a[0]=1이면 어떨까.이렇게

세 요소 모두 0을 가리켰던 안쪽 리스트가 1만을 가리킨 것이다.
다른 한편, 외부의 목록은 여전히 각 요소가 하나의 실체만 있는 내부 목록을 가리키는 상태이다.그러므로
[[1, 0, 0], [1, 0, 0], [1, 0, 0]]
.

총결산


목록*이 표시되면 참조 정보가 복사됩니다.가리키는 것은 복제된 것이 아니다.만약 이곳의 행동을 이해하지 못한다면 프로그램을 쓰면 불행할 수도 있다.

좋은 웹페이지 즐겨찾기