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

Python:如何在列表中只更改列表中的一个变量?,python,list,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[0][0] = 1 print(b) 结果显示为:[[1,0,0],[1,0,0],[1,0,0]] 如何仅将1赋给第一个值,以便获得:[[1,0,0],[0,0,0],[

因此,我在列表中创建了一个列表,并将其打印出来:

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[0][0] = 1
print(b)
结果显示为:
[[1,0,0],[1,0,0],[1,0,0]]


如何仅将1赋给第一个值,以便获得:
[[1,0,0],[0,0,0],[0,0,0]]

b
中,对同一列表(
a
)有三个引用。相反,创建三个列表。最简单的方法是在构建
b
时复制
a

for i in range(3):
    b.append(a[:])

您在
b
中有三个对同一列表(
a
)的引用。相反,创建三个列表。最简单的方法是在构建
b
时复制
a

for i in range(3):
    b.append(a[:])

b
中有三个相同的列表。您可以通过以下方式删除此依赖项:

b = []
for i in range(3):
    b.append([0]*3)   
print b 

b
中有三个相同的列表。您可以通过以下方式删除此依赖项:

b = []
for i in range(3):
    b.append([0]*3)   
print b 

您可以将列表构建为
[[0用于范围内(3)]用于范围内(3)]
您可以将列表构建为
[[0用于范围内(3)]用于范围内(3)]