首页 > 解决方案 > 将值分配给相同的列表,但得到不同的结果

问题描述

我创建了两个相同的零列表。然而,当列表分配给相同的值时,结果会有所不同。这是我的代码和结果。

代码:

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

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

标签: python

解决方案


m1中,您引用了相同的[[0] * 4]4 次。基本上你在做:

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

导致 x 被[0 1 0 0] 重复 4 次m1


推荐阅读