gpt4 book ai didi

python - 生成器不一定会产生任何东西

转载 作者:行者123 更新时间:2023-11-30 23:13:56 25 4
gpt4 key购买 nike

我想要一个生成器,它可能会产生任何东西,也可能不会产生任何东西,并且如果使用 .next() 或类似的东西,它不会出现 StopIteration 错误如果没有满足屈服条件。

一个例子:

def A(iterable):
for x in iterable:
if x == 1:
yield True

其工作原理如下:

>>> list(A([1,2]))
[True]
>>> A([1]).next()
True
>>> A([2]).next()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
StopIteration

但我想要的是 A([2]).next() 返回的是 None

最佳答案

通常,在这些情况下,您会使用内置的 next 函数:

my_iterator = A([2])
value = next(my_iterator, None)

除了能够在迭代器为空时传递可选的“默认”值之外,next 还具有在方法名称发生变化的 python2.x 和 python3.x 上工作的优点到__next__

关于python - 生成器不一定会产生任何东西,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29022307/

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