gpt4 book ai didi

python - 从生成器中强制生成一个列表

转载 作者:行者123 更新时间:2023-12-01 02:40:23 24 4
gpt4 key购买 nike

>>>def change(x): 
... x.append(len(x))
... return x
>>>a=[]
>>>b=(change(a) for i in range(3))
>>>next(b)
[0]
>>>next(b)
[0,1]
>>>next(b)
[0,1,2]
>>>next(b)
Traceback ... StopIteration
>>>a=[]
>>>b=(change(a) for i in range(3))
>>>list(b) #expecting [[0],[0,1],[0,1,2]]
[[0,1,2],[0,1,2],[0,1,2]]

所以我只是测试我对生成器的理解并摆弄命令提示符,现在我不确定我是否真正理解生成器是如何工作的。

最佳答案

问题是对 change(a) 的所有调用都会返回同一个对象(在本例中,该对象是 a 的值>),但是这个对象是可变的并且会改变它的值。不使用生成器的相同问题的示例:

a = []
b = []
for i in range(3):
a.append(len(a))
b.append(a)
print b

如果你想避免它,你需要复制你的对象(例如,让 change 返回 x[:] 而不是 x )。

关于python - 从生成器中强制生成一个列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45779446/

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