gpt4 book ai didi

python - 避免在 for 循环中更新嵌套列表

转载 作者:行者123 更新时间:2023-11-28 21:11:22 25 4
gpt4 key购买 nike

我有一个 Python 程序,我想在 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)

print(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 循环中更改列表时,我该怎么做才能阻止数组更新?

最佳答案

array.append(road)

将此更改为

array.append(road[:])

附加列表的副本。这样您就可以附加多个不同的列表,而不是重复附加同一个列表对象。

关于python - 避免在 for 循环中更新嵌套列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35491243/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com