我有一个Python程序,我想要在for循环中创建不同的列表,然后将这些列表存储在另一个列表中以创建一个数组。我接收一个输入列表,修改它并将其附加到存储列表中,然后重复。我的问题是,当我更新循环中的下一个列表时,数组中的所有列表也会更新,所以我最终得到一个包含多个相同列表的数组。避免更新for循环中的嵌套列表
array = []
road = [1,0,0,0,0,0,0,0]
array.append(road)
for i in range(0,len(road)-1):
if road[i] == 1:
road[i] = 0
road[i+1] = 1
print(road)
array.append(road)
打印(公路)产生正是我想即
[0, 1, 0, 0, 0, 0, 0, 0]
[0, 0, 1, 0, 0, 0, 0, 0]
[0, 0, 0, 1, 0, 0, 0, 0]
[0, 0, 0, 0, 1, 0, 0, 0]
[0, 0, 0, 0, 0, 1, 0, 0]
[0, 0, 0, 0, 0, 0, 1, 0]
[0, 0, 0, 0, 0, 0, 0, 1]
,但最后一次迭代后的数组包含
[[0, 0, 0, 0, 0, 0, 0, 1], [0, 0, 0, 0, 0, 0, 0, 1], [0, 0, 0, 0, 0, 0, 0, 1], [0, 0, 0, 0, 0, 0, 0, 1], [0, 0, 0, 0, 0, 0, 0, 1], [0, 0, 0, 0, 0, 0, 0, 1], [0, 0, 0, 0, 0, 0, 0, 1], [0, 0, 0, 0, 0, 0, 0, 1]]
,并在第一次迭代后
[[0, 1, 0, 0, 0, 0, 0, 0], [0, 1, 0, 0, 0, 0, 0, 0]]
我可以做什么当我更改for循环中的列表时,是否要停止更新数组?
具体来说,它附加了'list'的_shallow_副本;也就是说,由于'list'包含不可变对象('int'),所以这很好。如果'road'是'list'的'list'虽然,你会想要使用'copy.deepcopy'。 – ShadowRanger