我可以从发电机中挑选特定物品吗?

时间:2015-04-10 19:53:49

标签: python python-2.7 generator

使用:

def merge(a, b):
    i = j = 0
    total = len(a) + len(b)
    while i + j < total:
        if j == len(b) or (i < len(a) and a[i] <= b[j]):
            yield a[i]
            i += 1
        else:
            yield b[j]
            j += 1

我可以从生成器中选择第三个元素,还是必须按next()三次迭代?

1 个答案:

答案 0 :(得分:2)

您可以将itertools.islicenext结合使用。但是,这将消耗您的生成器中的步骤,因此它实际上与调用next三次并获取第三个值相同。这只是一种更抽象的方式。

>>> from itertools import islice
>>> g = (i for i in range(10))
>>> next(islice(g, 2, 2 + 1))
2
>>> next(g)
3