Pythonitertools.takewhile

示例

itertools.takewhile使您可以从序列中取出项目,直到条件首次变为False。

def is_even(x):
    return x % 2 == 0


lst = [0, 2, 4, 12, 18, 13, 14, 22, 23, 44]
result = list(itertools.takewhile(is_even, lst))

print(result)

这输出[0, 2, 4, 12, 18]。

请注意,违反谓词的第一个数字(即:返回布尔值的函数)is_even是13。一旦takewhile遇到False为给定谓词产生的值,它就会爆发。

产生的输出通过takewhile类似于从下面的代码所产生的输出。

def takewhile(predicate, iterable):
    for x in iterable:
        if predicate(x):
            yield x
        else:
            break

注意:由产生的结果的串联takewhile和dropwhile产生原始可迭代的结果。

result = list(itertools.takewhile(is_even, lst)) + list(itertools.dropwhile(is_even, lst))