2016-07-18 19 views
0

listA.append(listB)を使用してリスト内のリストを作成するにはリストBからリストAにデータを追加しようとしています。初心者からPythonに追加する必要があるものは何ですか?なぜこれが起こっているここリストAにリストBを追加し、新しい要素のリスト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]、[3]、[3]、[7] [7] [8] [3] [3] [7] [0] ] @ [{7]、[0]、[8]、[3]、[3]、[7]] –

+0

@GeminiKeith listBの現在のインスタンスのすべてをlistAに追加します。私は 'listA = listA + listB'を試していましたが、これは私に' [0,1] 'タイプのlistAを与えています –

答えて

1

の内容をbに追加していない場合は、bを追加しています。前の内容を空にするのではなく、ループ内でbを再バインドする必要があります。

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

ありがとう、それは働いた。これを試していなかった。 –

1

あなたはいつもあなたのリストに同じリストオブジェクトbを追加します。つまり、リストaは、と同じリストオブジェクトbの10倍を含むことになります。

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が少し早く回答したので、彼の答えをマークしています。 –

関連する問題