gpt4 book ai didi

python - Itertools循环法——为什么 "while"循环?

转载 作者:太空宇宙 更新时间:2023-11-04 02:11:51 26 4
gpt4 key购买 nike

查看 itertools.cycle 的实现细节,在我看来,while 循环用于重置生成器(具有 yield 的函数)并提供可迭代的无限重复,但如果是这样,则不是向上移动并删除方法的后半部分。假设他们比我聪明,我假设我遗漏了一些东西,尽管下面的第二个函数似乎适用于生成的字典、列表和字符串。

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 时耗尽> 循环,随后通过此循环将不会产生任何结果。您需要在第一次迭代时将可迭代对象的内容保存在某处,以避免发生这种情况。

关于python - Itertools循环法——为什么 "while"循环?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53585048/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com