2016-07-18 85 views
0

我想追加列表B中的數據到列表A,以在列表內創建列表,使用listA.append(listB)不工作,我是新手到python有什麼額外需要添加?追加列表B到列表A和刪除列表B元素的新元素python

這裏是示例代碼

`from random import randint 
def call(): 
    c=0 
    a=[] 
    b=[] 
    while (c != 10): 
     b.append(randint(0,9)) 
     print b 
     a.append(b) 
     print a 
     del b[:] 
     c=c+1 

for i in range(2): 
    call()` 

這裏輸出

`[7] 
[[7]] 
[3] 
[[3], [3]] 
[3] 
[[3], [3], [3]] 
[8] 
[[8], [8], [8], [8]] 
[0] 
[[0], [0], [0], [0], [0]] 
[7] 
[[7], [7], [7], [7], [7], [7]] 
[3] 
[[3], [3], [3], [3], [3], [3], [3]] 
[9] 
[[9], [9], [9], [9], [9], [9], [9], [9]] 
[2] 
[[2], [2], [2], [2], [2], [2], [2], [2], [2]] 
[1] 
[[1], [1], [1], [1], [1], [1], [1], [1], [1], [1]] 
[8] 
[[8]] 
[0] 
[[0], [0]] 
[0] 
[[0], [0], [0]] 
[6] 
[[6], [6], [6], [6]] 
[2] 
[[2], [2], [2], [2], [2]] 
[7] 
[[7], [7], [7], [7], [7], [7]] 
[9] 
[[9], [9], [9], [9], [9], [9], [9]] 
[7] 
[[7], [7], [7], [7], [7], [7], [7], [7]] 
[6] 
[[6], [6], [6], [6], [6], [6], [6], [6], [6]] 
[1] 
[[1], [1], [1], [1], [1], [1], [1], [1], [1], [1]]` 

我不明白爲什麼會出現這種情況?

+0

什麼是期望的輸出?實際上,你的列表中有列表。 – mhoff

+0

所需出放是''[7] [[7]] [3] [[3],[7]] [3] [[3],[3],[7]] [8] [[8],[3],[3],[7]] [0] [[0] [8] [3] [7]] [7] ] [[7],[0],[8],[3],[3],[7]] ' –

+0

@GeminiKeith我想將listB的當前實例中的所有內容附加到listA。我曾試過'listA = listA + listB',但是這給了我''0,1]'類型的列表A –

回答

1

您不會追加的內容b,您追加b本身。您需要在循環中重新綁定b,而不是僅清空以前的內容。

... 
print a 
b = [] 
c=c+1 
+0

謝謝,它的工作。沒有試過這個。 –

1

你總是相同列表對象b添加到列表中。這意味着,您的清單a將包含10倍的相同的清單對象b

更改爲b的內容現在已反映到a中的所有項目,這就是您想知道的。

下面的代碼完成你打算做的事情。

from random import randint 

def call(): 
    c=0 
    a=[] 
    while (c != 10): 
     b = [] # a new list for each iteration! 
     b.append(randint(0,9)) 
     print b 
     a.append(b) 
     print a 
     c=c+1 

for i in range(2): 
    call()` 
+0

謝謝,+1爲解釋。 :) @Ignacio Vazquez-Abrams給出的答案稍早一點,所以標記了他的答案。 –

相關問題