Python:如何只更改列表中列表中的一个变量?

时间:2017-10-04 01:08:39

标签: python list

所以我在列表中创建了一个列表并打印出来:

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]]

2 个答案:

答案 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