当采用如下方式创建多维list时:

a = [[0.] * 5] * 5
print(a)
a[0][0] = 1.
print(a)

如果尝试给其中一个元素赋值时,会发现整个列表的第一列均被赋值

image

这种情况的原因是创建列表时第2,3,4,5⾏其实是第⼀⾏的⼀个浅拷贝,它们的地址是⼀样的,给任意⼀个赋值其余的也会被赋值。

解决⽅法是使⽤如下⽅法建⽴⼆维列表:

a = [[0.] * 5 for i in range(5)]
print(a)
a[0][0] = 1.
print(a)

赋值结果:

image