我试图将列表B中的数据附加到列表A以在列表中创建列表,使用listA.append(listB)不起作用,我是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 :(得分:1)
您没有追加b
的内容,而是追加b
本身。您需要在循环中重新绑定b
,而不是仅清空之前的内容。
...
print a
b = []
c=c+1
答案 1 :(得分: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()`