2014-10-16 2 views
-2
이 이상해

를 인쇄이 내 내 코드의 조각이다파이썬 변수 불일치

[[8, 1, 0], [5, 2, 6], [7, 3, 4]] 
0 2 
[[8, 0, 1], [5, 2, 6], [7, 3, 4]]          #d 
[[8, 1, 6], [5, 2, 0], [7, 3, 4]]          #e 
[[8, 1, 0], [5, 2, 6], [7, 3, 4], [8, 1, 0], [5, 2, 6], [7, 3, 4]] #s 

이 내가 일한다고 생각하지 않습니다 무엇인가, I e와 d를 s에 추가하면 다른 형태로 추가됩니다. 원하지 않으면 다른 사람이 무슨 일이 일어나는지 보시겠습니까? 내가 원하는 것은 전자이고 d는 인쇄 된 형태입니다. 그러나 그것을 올바른 형태로 추가하는 방법을 알 수있는 방법이 없었습니다.

+3

'e = d = c' **는 복사본을 만들지 않으므로 * 같은 목록 개체 *를 세 가지 이름 모두에 할당합니다. – jonrsharpe

+0

당신은'e = d = c'를 가지고 있기 때문에 그들은 모두 같은 대상입니다. 다른 하나를 바꾸십시오 ... – dawg

답변

4

파이썬 객체에 새 이름을 할당하면 복사되지 않고 링크됩니다. 따라서 e=d=c 이후에는 모두 같은 목록을 가리 킵니다. 하나를 바꾸면 모두 바뀝니다. 그 (것)들을 seperatly initalize 방지하십시오.

e = [] 
d = [] 
c = [] 
+2

또는'c, d, e = [], [], []'. –