gpt4 book ai didi

python - 从迭代器返回然后抛出 StopIteration

转载 作者:太空狗 更新时间:2023-10-29 22:13:57 24 4
gpt4 key购买 nike

当迭代器耗尽时,最后一次从迭代器返回某些东西的好方法是什么。我正在使用一个标志,但这相当丑陋:

class Example():

def __iter__(self):
self.lst = [1,2,3]
self.stop = False # <-- ugly
return self

def next(self):
if self.stop: # <-- ugly
raise StopIteration
if len(self.lst) == 0:
self.stop = True
return "one last time"
return self.lst.pop()

背景:我正在从外部来源获取未知数量的字符串并将它们进一步发送给调用者。当这个过程结束时,我想发出一个字符串“x records processed”。我无法控制调用代码,所以这必须在我的迭代器中完成。

最佳答案

你可以从 __iter__ 中产生,这会将它变成一个生成器函数(或者你可以按照 Dan 的建议编写一个生成器函数)。作为警告,这可能会误导滥用 next 方法的人。

class Example():

def __iter__(self):
lst = [1,2,3]
for i in reversed(lst):
yield i
yield "one last time"

关于python - 从迭代器返回然后抛出 StopIteration,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9401040/

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