`Itertools.cycle`:采取多个步骤的最蟒蛇方式?

2022-03-16 00:00:00 python python-3.x generator itertools

问题描述

我有一些列表,我想快速浏览一下。问题是我对一次循环浏览一个元素不感兴趣,但是我想一次循环浏览n个元素。

例如,如果我的列表是l = ["a", "b", "c", "d"],那么我需要以下输出:

>>> from itertools import cycle
>>> gen = cycle(l)
>>> next(gen, 4) # I know this doesn't work -- take as pseudocode
d
>>> next(gen, 3)
c

我知道我可以通过类似以下内容来实现这一点:

def generator_step(g, n):
    for item in range(n):
        next(g)
     return item

解决方案

您可以在调用Next之前使用itertools.islice将循环对象前进:

from itertools import cycle, islice

c = cycle(l)
n = 4
print(next(islice(c, n-1, n)))
# d

相关文章