是否可以一次调用无限python生成器的多个下一个值?

问题描述 投票:1回答:1

是否有任何方法可以在不循环或调用next()n次的情况下获取生成器的下n个值?生成器在这种情况下是无限的,不能转换为列表。这是生成器函数:

def f():
    a, b = 0, 1
    while True:
        yield a
        a, b = b, a + b

以下循环都给出期望的结果,但是我想知道是否还有其他方法可以做到这一点。

gen = f()
n = 0
while n < 10:
    print(next(gen))
    n += 1

或..

for n, i in enumerate(f()):
    if n < 10:
        print(i)
    else:
        break
python generator
1个回答
0
投票

有几种方法可以做到这一点。一种方法是使用列表理解,类似于上面已经介绍的内容。例如:

gen = f()
elements = [next(gen) for _ in range(10)]

另一种方法是使用类似itertools module的东西,例如itertools-或takeWhile()-功能。

也请检出islice()

© www.soinside.com 2019 - 2024. All rights reserved.