Python:for循环中的下一个

标签 python generator next

我想使用 next 跳过从生成器返回的一个或多个项目。这是一个简化的示例,旨在每个循环跳过一个项目(在实际使用中,我会测试 n 并根据结果,可能会重复 next() 和生成器来 self 无法控制的包):

def gen():
for i in range(10):
    yield i

for g in gen():
   n = next(gen())
   print(g, n)

我期待的结果是

0 1
2 3

等等

相反,我得到了

0 0
1 0

等等

我做错了什么?

最佳答案

每次调用 gen() 时,您都在创建一个新的生成器。每个新生成器都从 0 开始。

相反,您可以调用它一次并捕获返回值。

def gen():
    for i in range(10):
        yield i

x = gen()
for g in x:
    n = next(x)
    print(g, n)

关于Python:for循环中的下一个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55553886/

相关文章:

file-io - 在 Common Lisp 中逐行(低内存)读取文件

javascript - jQuery:如何从 parent 那里找到 sibling

python - 在 shell 脚本中运行 Python 脚本 - 检查状态

python - 在没有文件扩展名的Django中返回文件路径

Python:如何将数据拆分为不同数据类型的二维数组

python - (错误)理解生成器

python - 给定 N 个生成器,是否可以创建一个在并行进程中运行它们并生成这些生成器的 zip 的生成器?

javascript - jQuery nextUntil 表遍历选择

c# - 歌曲播放完了吗? (C# MCI)

python - 生成过滤的二元笛卡尔积