gpt4 book ai didi

python - 需要在python中的迭代器的开头添加一个元素

转载 作者:行者123 更新时间:2023-12-03 15:18:18 25 4
gpt4 key购买 nike

我有一个程序如下:

a=reader.next()
if *some condition holds*:
#Do some processing and continue the iteration
else:
#Append the variable a back to the iterator
#That is nullify the operation *a=reader.next()*

如何将元素添加到迭代器的开头?
(或者有没有更简单的方法来做到这一点?)

编辑:好的,让我这样说。我需要迭代器中的下一个元素而不删除它。
我该怎么做>?

最佳答案

因此,Python 迭代器的功能非常有限——没有“附加”或类似的东西。您需要将通用迭代器包装在添加该功能的包装器中。例如。:

class Wrapper(object):
def __init__(self, it):
self.it = it
self.pushedback = []
def __iter__(self):
return self
def next(self):
if self.pushedback:
return self.pushedback.pop()
else:
return self.it.next()
def pushback(self, val):
self.pushedback.append(val)

这是 Python 2.5(也应该在 2.6 中工作)——建议 2.6 的轻微变体和 3.any 的强制(使用 next(self.it) 而不是 self.it.next() 并定义 __next__ 而不是 next)。

编辑 :OP 现在说他们需要的是“提前查看而不消耗”。包装仍然是最好的选择,但另一种选择是:
import itertools
...
o, peek = itertools.tee(o)
if isneat(peek.next()): ...

这不会前进 o (请记住在您决定要这样做时提前它;-)。

关于python - 需要在python中的迭代器的开头添加一个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1264319/

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