2013-09-21 7 views
-3

누구나 내가 얻고있는 결과를 설명해 주시겠습니까? 처음으로 변수 lists가 비어 있지만 즉 10data[i]lists[i]에 추가 할 때 내가이 긴 목록이 들어 오면 와서 잘 모릅니다Python uncaught리스트 변수의 동작

List: [[10], [10, [10]] 

가된다. 나는 그것의 행동을 추적하는 강타 파이썬에 새로운 오전. 여기에 코드

data = [10, 20, 30] 
list1 = list2 = list3 = list() 
lists = [list1, list2, list3] 

for i in range(len(data)): 
    lists[i].append(data[i]) 
    print '-------------------' 
    print 'at %s' %(i) 
    print ' List: %s' % (lists) 
    print ' Data: %s' % (data[i]) 

그리고 응답

------------------- 
at 0 
List: [[10], [10], [10]] 
Data: 10 
------------------- 
at 1 
List: [[10, 20], [10, 20], [10, 20]] 
Data: 20 
------------------- 
at 2 
List: [[10, 20, 30], [10, 20, 30], [10, 20, 30]] 
Data: 30 
+0

@lejlot 아니요, 언급 한 게시물의 중복이 아닙니다. 여기에 내가 설명이 완벽하게 설명해야합니다 Rohit에 의해 언급 된 게시물 – MaNKuR

+1

그것은 Rohit에 의해 표시된 하나는 실제로 조금 다른 반면, 목록 곱셈 연산이 참조를 처리하는 방법을 보여주기 때문에 두 질문에서 설명됩니다 (* * 여기의 경우는 아닙니다 **). 그러나 그것은 정말로 중요하지 않습니다 - 어느 쪽이든 - 그것은 중복 질문입니다. 그리고 이미 사이트에서 좋은 답변을 가지고 있습니다. 그들이 당신이 이슈를 이해하도록 도왔 으면 좋겠어요. :) – lejlot

답변

1

이 잘못된 질문 (그 다음에서 제공하는 다른 코드의 출력을 포함) , 당신은 아마 두 번째 (초기화 후) 일부 다중를 실행입니다 귀하의 통역사 시간.

------------------- at 0 List: [[10], [10], [10]] Data: 10 ------------------- at 1 List: [[10, 20], [10, 20], [10, 20]] Data: 20 ------------------- at 2 List: [[10, 20, 30], [10, 20, 30], [10, 20, 30]] Data: 30 

파이썬 2.7

"여러 추가"의 측면은 이미 내가이 정보를 복제하지 않는 this question에 대한 답이 테스트 같은 코드의 출력은 보일 것입니다.

+0

예, 맞습니다. 우연히 그랬습니다 ... 나는 인정합니다. 실수 당신의 도움을 주셔서 감사합니다 – MaNKuR

0

게시자가 게시 한 코드 코드의 출력이 아닌지 확인하십시오. 그것은 당신이 추가하는리스트와 매우 흡사합니다 (list1, list2, list3 및 lists [i]가 참조하는 모든 이름이 있지만 루프가 하나씩 실행될 때마다 새로 생성되지는 않았습니다) 당신이 올린 코드의 두 번째와 세 번째 줄에.

+0

예, 맞습니다, 나는이 코드를 실행했습니다. 그 때문에 ipython을 사용하는 터미널에 얼마나 많은 시간이 있는지 알지 못합니다. 응답을 얻었으나 지금은 그 대답을 향상 시켰습니다. 범위 내에서 len (데이터)) : .... : lists [i] .append (data [i]) .... : 인쇄 '------------------- '% s'% (i) .... : 인쇄 '% s'% (i) .... : 인쇄 '목록 : % s'% (목록) .... : 인쇄 '데이터 : % s'% (데이터 [i]) – MaNKuR

+0

당신의 힌트를 주셔서 감사 드리며 이제는 모든 것을 두려워하십시오. – MaNKuR