Itertools循环方法 - 为什么“while”循环?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Itertools循环方法 - 为什么“while”循环?相关的知识,希望对你有一定的参考价值。
回顾一下itertools.cycle的实现细节,在我看来,while循环用于重置生成器(带有yield的函数)并提供一个可迭代的无限重复,但如果是这种情况,则不要向上移动而up并删除方法的后半部分。假设他们比我聪明,我假设我错过了一些东西,虽然下面的第二个函数似乎与产生的词组,列表和字符串一起工作。
https://docs.python.org/3.7/library/itertools.html#itertools.cycle
def cycle(iterable):
# cycle('ABCD') --> A B C D A B C D A B C D ...
saved = []
for element in iterable:
yield element
saved.append(element)
while saved:
for element in saved:
yield element
与
def cycle_huh(iterable):
# cycle('ABCD') --> A B C D A B C D A B C D ...
while True:
for element in iterable:
yield element
我肯定错过了什么?或者是可迭代类型,其中第一个是必需的,第二个会破坏它。
答案
如果iterable
是一个生成器或其他适当的迭代器(而不是一个列表),那么它将在第一次通过for element in iterable
循环时耗尽,随后通过这个循环将不会产生任何效果。你需要在第一次迭代时保存iterable的内容,以避免这种情况发生。
以上是关于Itertools循环方法 - 为什么“while”循环?的主要内容,如果未能解决你的问题,请参考以下文章