python:分配并读出二维列表的值

时间:2018-05-20 04:31:49

标签: python

这是一段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)

结果也是我想要的。我再次对此感到困惑。

谁能告诉我区别?

2 个答案:

答案 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)]