Python 2D数组的惊人行为

时间:2019-07-11 21:26:51

标签: python

我遇到了python的奇怪行为

情况1:-          arr=[[0]*2]*3和          arr[0][0]=12 将arr设为[[12,0],[12,0],[12,0]]

情况2:-          arr=[[0, 0], [0, 0], [0, 0]]和          arr[0][0]=12 将arr设为[[12,0],[0,0],[0,0]]

为什么这种行为?

1 个答案:

答案 0 :(得分:0)

在看到您的问题之前,我无法告诉您这一点,但是代码如下:

arr=[[0]*2]*3

显然是在创建列表[0,0],然后创建一个外部列表,其中包含对该同一内部列表的3个引用。因此,当您设置arr [0,0]时,将设置被引用三次的那个内部列表的第一个元素。

另一方面,您的第二个示例将生成一个包含三个唯一内部列表的外部列表。