将值分配给相同的列表,但得到不同的结果

时间:2018-09-21 00:17:30

标签: python

我创建两个相同的零列表。但是,当列表分配给相同的值时,结果是不同的。这是我的代码和结果。

代码:

m1 = [[0] * 4] * 4
m2 = [[0 for j in range(4)] for i in range(4)]
m1[0][1] = 1
m2[0][1] = 1
print('m1:', m1)
print('m2:', m2)

结果:

m1: [[0, 1, 0, 0], [0, 1, 0, 0], [0, 1, 0, 0], [0, 1, 0, 0]]
m2: [[0, 1, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]]

或者这两个列表不是“相同的”?任何帮助,将不胜感激。

1 个答案:

答案 0 :(得分:0)

m1中,您引用了同一[[0] * 4] 4次。基本上,您正在这样做:

x = [0, 0, 0, 0]
m1 = [x, x, x, x]
x[1] = 1

导致x为[0 1 0 0] 并在m1

中重复4次