修改python嵌套列表时出现问题

时间:2019-01-31 21:03:43

标签: python arrays list

当我们修改它的一个元素时,两种(看似)等效的构造python嵌套列表的方式将表现出很大的不同:

构造1:修改一个元素不会影响其他元素。

p1 = [[0] * 5 for i in range(4)]
p1[2][2] = 3
    
p1
Out[25]: [[0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 3, 0, 0], [0, 0, 0, 0, 0]]

构造2:修改一个元素将修改同一列中的所有元素。

p2 = [[0] * 5] * 4
p2[2][2] = 3

p2
Out[23]: [[0, 0, 3, 0, 0], [0, 0, 3, 0, 0], [0, 0, 3, 0, 0], [0, 0, 3, 0, 0]]

我想知道为什么会这样吗?这两种构造方式似乎是等效的。

0 个答案:

没有答案