这是一段python代码:
Ordered.HIGHEST_PRECEDENCE
但是,两张照片的输出是不同的。
前者打印出我想要的东西。第二个打印出4个子列表的相同内容。
似乎浅拷贝的问题。我真的不明白它是如何以及为什么会发生的。
更新
在我解决了这个问题之后,我发现了另一个问题:
a = [[0]*3]*4
for i in range(4):
for j in range(3):
a[i][j] = i+j
print(a[i][j])
print(a)
结果也是我想要的。我再次对此感到困惑。
谁能告诉我区别?
答案 0 :(得分:-1)
[[0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0]]
0
[[0, 1, 0], [0, 1, 0], [0, 1, 0], [0, 1, 0]]
1
[[0, 1, 2], [0, 1, 2], [0, 1, 2], [0, 1, 2]]
2
[[1, 1, 2], [1, 1, 2], [1, 1, 2], [1, 1, 2]]
1
[[1, 2, 2], [1, 2, 2], [1, 2, 2], [1, 2, 2]]
2
[[1, 2, 3], [1, 2, 3], [1, 2, 3], [1, 2, 3]]
3
[[2, 2, 3], [2, 2, 3], [2, 2, 3], [2, 2, 3]]
2
[[2, 3, 3], [2, 3, 3], [2, 3, 3], [2, 3, 3]]
3
[[2, 3, 4], [2, 3, 4], [2, 3, 4], [2, 3, 4]]
4
[[3, 3, 4], [3, 3, 4], [3, 3, 4], [3, 3, 4]]
3
[[3, 4, 4], [3, 4, 4], [3, 4, 4], [3, 4, 4]]
4
[[3, 4, 5], [3, 4, 5], [3, 4, 5], [3, 4, 5]]
5
[[3, 4, 5], [3, 4, 5], [3, 4, 5], [3, 4, 5]]
在每个步骤中,具有相同列的列表将使用相同的值进行更新。 输出
=RIGHT(A1,LEN(A1)-FIND("☃",SUBSTITUTE(A1," ","☃",LEN(A1)-LEN(SUBSTITUTE(A1," ","")))))
答案 1 :(得分:-3)
运算符获取列表和int的乘数将使列表元素的副本变浅,因此您处于正确的轨道上。
像这样初始化
a = [[0] * 3 for _ in range(4)]