所以我在列表中创建了一个列表并打印出来:
a = []
b = []
for i in range(3):
a.append(0)
for i in range(3):
b.append(a)
print(b)
结果是:
按预期[[0, 0, 0], [0, 0, 0], [0, 0, 0]]
但是当我尝试使用
指定b中第一个列表的第一个值时b[0][0] = 1
print(b)
结果如下:[[1, 0, 0], [1, 0, 0], [1, 0, 0]]
如何将1分配给第一个值,我得到:[[1, 0, 0], [0, 0, 0], [0, 0, 0]]
?
答案 0 :(得分:2)
a
中有三个对同一列表(b
)的引用。而是创建三个列表。最简单的方法是在构建a
时制作b
的副本:
for i in range(3):
b.append(a[:])
答案 1 :(得分:0)
b
中有三个相同的列表。您可以通过以下方式删除此依赖项:
b = []
for i in range(3):
b.append([0]*3)
print b