简单的python列表修改

2024-04-26 03:06:35 发布

您现在位置:Python中文网/ 问答频道 /正文

谢谢你花时间回答这个问题。我不明白为什么输出不匹配。你知道吗

操作1:

x = [[0, 0], [0, 0]]
print(type(x)) # <class 'list'>
print(x) # [[0, 0], [0, 0]]

x[0][0] = 1
print(x) # [[1, 0], [0, 0]]

操作2:

y = [[0] * 2] * 2
print(type(y)) # <class 'list'>
print(y) # [[0, 0], [0, 0]]

y[0][0] = 1
print(y) # [[1, 0], [1, 0]]

我的理解是x和y应该是一样的。但看起来不是。我错过了什么?你知道吗


Tags: type时间listclassprint
1条回答
网友
1楼 · 发布于 2024-04-26 03:06:35

你缺少的是当你这么做的时候:

y = [[0] * 2] * 2

您已经创建了一个列表[0],然后[0, 0]。将此列表称为X。然后创建[X, X],其中两个X都指向相同的基础列表。所以当你修改第一个列表时,第二个列表也会被修改。你知道吗

为什么修改第一个列表的第一个元素不同时修改每个列表的第二个元素?好吧,那是因为[0] * 2实际上是一个由两个数字组成的列表,因为对0的引用是不能修改的(想象一下,如果你的程序的0意味着别的什么,那会有多可怕!)。你知道吗

相关问题 更多 >