如何在包含列表的列表中结算值?

2024-03-28 11:10:22 发布

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

我想制作一个简单的数组b,并将b[0][0]设置为1。然而,b[1][0]b[2][0]b[3][0]也发生了变化。如何解决这个问题

>>> a=[0]*5
>>> b=[a]*4
>>> b
[[0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0]]
>>> b[0][0]
0
>>> b[0][0]=1
>>> b
[[1, 0, 0, 0, 0], [1, 0, 0, 0, 0], [1, 0, 0, 0, 0], [1, 0, 0, 0, 0]]

Tags: 数组
1条回答
网友
1楼 · 发布于 2024-03-28 11:10:22

列表b是使用列表a创建的,并且b中的所有行引用与a相同的列表对象:

您可以通过使用a的副本来避免这种行为:

b = [a.copy()]

为了避免b中的每一行指向同一个对象:

b = [a.copy() for _ in range(4)]

相关问题 更多 >