Python:为什么这两个相同的列表列表通过不同的方式创建的行为不同?

时间:2017-09-17 18:42:11

标签: python

在两个片段下方创建维度列表(5x5),但它们会产生不同的结果

  • a = [[0]*5]*5
  • b = [[0 for x in range(5)] for y in range(5)]

两者都会给我同样的名单:

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

但是,当我这样做时,两者都给出了不同的结果:

a[0][0] = 1
[[1, 0, 0, 0, 0], [1, 0, 0, 0, 0], [1, 0, 0, 0, 0], [1, 0, 0, 0, 0], [1, 0, 0, 0, 0]]
b[0][0] = 1
[[1, 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 个答案:

没有答案