使用itertools.dropwhile时遇到困难

tur*_*tle 2 python python-itertools

我试图itertools.dropwhile只使用返回第三个元素之后的生成器中的元素,但是我遇到了一些麻烦:

from itertools import dropwhile

    it = (i for i in range(10,20))
    a = dropwhile(enumerate < 3, it)   
    next(a)
    TypeError: 'bool' object is not callable 
Run Code Online (Sandbox Code Playgroud)

我正在寻找的输出是:

[14, 15, 16, 17, 18, 19]
Run Code Online (Sandbox Code Playgroud)

谁能解释我的代码有什么问题并提供有效的解决方案?谢谢.

dki*_*kim 8

itertools提供完全符合您的要求的功能.从Python标准库,

itertools.islice(iterable [,start ],停止 [,step ])

创建一个迭代器,从迭代中返回所选元素.如果start为非零,则跳过iterable中的元素,直到达到start.之后,连续返回元素,除非将step设置为高于导致跳过项目的步骤.如果停止None,那么迭代继续进行,直到迭代器被耗尽,如果在所有; 否则,它停在指定位置.

>>> import itertools
>>> it = (i for i in range(10, 20)) # it = xrange(10, 20)
>>> a = itertools.islice(it, 4, None)
>>> list(a)
[14, 15, 16, 17, 18, 19]
Run Code Online (Sandbox Code Playgroud)