与 itertools.dropwhile 相反(如何在 N 次迭代后停止生成器)
opposite of itertools.dropwhile (how to stop generators after N iteration)
有没有一种简单的方法可以在 N
循环后停止迭代器?当然我可以这样写:
for i, val in enumerate(gen()):
if i > N: break
但我想写一些像
for val in stop_after(gen(), N):
...
我试过 itertools.dropwhile
但它似乎起到了相反的作用。当然我可以用逆逻辑重写itertools.dropwhile
,但我想知道是否已经实现了一些东西。
我认为你需要 itertools.takewhile
:
https://docs.python.org/2/library/itertools.html#itertools.takewhile
使用islice
:
for val in itertools.islice(gen(), N):
....
假设您的示例是:
for i, val in enumerate(gen()):
if i > N: break
有没有一种简单的方法可以在 N
循环后停止迭代器?当然我可以这样写:
for i, val in enumerate(gen()):
if i > N: break
但我想写一些像
for val in stop_after(gen(), N):
...
我试过 itertools.dropwhile
但它似乎起到了相反的作用。当然我可以用逆逻辑重写itertools.dropwhile
,但我想知道是否已经实现了一些东西。
我认为你需要 itertools.takewhile
:
https://docs.python.org/2/library/itertools.html#itertools.takewhile
使用islice
:
for val in itertools.islice(gen(), N):
....
假设您的示例是:
for i, val in enumerate(gen()):
if i > N: break