在python中创建二维列表并对表中的一个元素重新赋值时常会出现错误情况,例如:
N,M=3,2 #3行2列
L = []
l = []
for m in range(M):
l.append(0)
for n in range(N):
L.append(l)
print('原始列表:',L)
L[1][1]=1
print('赋值后的列表:',L)
输出:
这是因为上述只是将 l 重复了3次放在L里,L中的每个元素对应的都是同一块存储位置,可以用浅拷贝解决此问题:
N,M=3,2 #3行2列
L = []
l = []
for m in range(M):
l.append(0)
for n in range(N):
L.append(l.copy()) #浅拷贝
print('原始列表:',L)
L[1][1]=1
print('赋值后的列表:',L)