gpt4 book ai didi

python - 我在循环中使用了append(),由于某种原因,列表每次都会发生变化,而不是以应有的方式变化

转载 作者:行者123 更新时间:2023-12-01 00:56:01 25 4
gpt4 key购买 nike

我写了这段代码:

if __name__ == "__main__" :
lst = []
current= []
for i in range(3):
print(current)
print(lst)
lst.append(current)
print(lst)
current.append(i)

我期望它打印:

[]
[]
[[]]
[0]
[[]]
[[],0]
[0,1]
[[],0]
[[],0,[0,1]]

但它打印的是:

[]
[]
[[]]
[0]
[[0]]
[[0], [0]]
[0, 1]
[[0, 1], [0, 1]]
[[0, 1], [0, 1], [0, 1]]

我不明白为什么 lst 将其成员更改为 current。

最佳答案

不要用这行lst.append(current),而是这样:

from copy import copy

lst.append(copy(current))

这个问题是,当您将 current 附加到 lst 时,它看起来很好,但是在下一次迭代中,当您更改 current 并再次附加它时,它将更改您已附加的上一个当前。这就是为什么您会看到两个 [0] 和三个 [0, 1]

看看This link以获得更多说明。

另请阅读This Link将对什么是副本以及副本类型产生积极影响。

关于python - 我在循环中使用了append(),由于某种原因,列表每次都会发生变化,而不是以应有的方式变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56252412/

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