对于此代码示例:
A = [[0] * 5] * 3
B = [[0 for x in range(5)] for y in range(3)]
print A
print B
A[0][0] = 10
B[0][0] = 10
print A
print B
使用此输出:
[[0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0]]
[[0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0]]
[[10, 0, 0, 0, 0], [10, 0, 0, 0, 0], [10, 0, 0, 0, 0]]
[[10, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0]]
列表与它们的打印相同,为什么A [0] [0] = 10不会随着B [0] [0] = 10而改变? 我期望的结果是B的变化方式。
编辑: 我不想知道修复列表A问题的替代解决方案,因为我提供的列表B已经是一个很好的解决方案,我想知道的是"为什么"列表A执行此行为。