gpt4 book ai didi

python - 如何在 Python 生成器中向前看一个元素(窥视)?

转载 作者:IT老高 更新时间:2023-10-28 21:42:00 26 4
gpt4 key购买 nike

我不知道如何在 Python 生成器中向前看一个元素。我一看就不见了。

这就是我的意思:

gen = iter([1,2,3])
next_value = gen.next() # okay, I looked forward and see that next_value = 1
# but now:
list(gen) # is [2, 3] -- the first value is gone!

这是一个更真实的例子:

gen = element_generator()
if gen.next_value() == 'STOP':
quit_application()
else:
process(gen.next())

谁能帮我写一个可以向前看一个元素的生成器?

最佳答案

为了完整起见,more-itertools package (它可能应该是任何 Python 程序员工具箱的一部分)包括一个实现此行为的 peekable 包装器。作为 the documentation 中的代码示例显示:

>>> p = peekable(['a', 'b'])
>>> p.peek()
'a'
>>> next(p)
'a'

但是,通常可以重写将使用此功能的代码,使其实际上不需要它。例如,问题中的实际代码示例可以这样编写:

gen = element_generator()
command = gen.next_value()
if command == 'STOP':
quit_application()
else:
process(command)

(读者注意:截至我写这篇文章时,我保留了示例中的语法,即使它指的是过时的 Python 版本)

关于python - 如何在 Python 生成器中向前看一个元素(窥视)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2425270/

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