gpt4 book ai didi

python - 如何通过生成器或其他方式在 Python 中无限循环迭代器?

转载 作者:太空狗 更新时间:2023-10-29 17:21:14 25 4
gpt4 key购买 nike

据我所知,使用生成器是实现此类目标的最佳方式,但我愿意接受建议。

具体来说,一个用例是这样的:我想打印一些项目和另一个任意长度的列表,并根据需要截断初始迭代器。

这是工作的 python 代码,演示了我想要的确切示例行为:

    def loop_list(iterable):
"""
Return a Generator that will infinitely repeat the given iterable.

>>> l = loop_list(['sam', 'max'])
>>> for i in range(1, 11):
... print i, l.next()
...
1 sam
2 max
3 sam
4 max
5 sam
6 max
7 sam
8 max
9 sam
10 max

>>> l = loop_list(['sam', 'max'])
>>> for i in range(1, 2):
... print i, l.next()
...
1 sam
"""
iterable = tuple(iterable)
l = len(iterable)
num = 0
while num < l:
yield iterable[num]
num += 1
if num >= l:
num = 0

问题/我的问题

您可能已经注意到,这仅适用于实现 __getitem__ 的列表/元组/可迭代对象(如果我没记错的话)。理想情况下,我希望能够传递任何可迭代对象,并接收一个可以正确循环其内容的生成器。

如果有更好的方法无需生成器即可完成此类操作,我也很满意。

最佳答案

您可以使用 itertools.cycle (来源包含在链接页面上)。

import itertools

a = [1, 2, 3]

for element in itertools.cycle(a):
print element

# -> 1 2 3 1 2 3 1 2 3 1 2 3 ...

关于python - 如何通过生成器或其他方式在 Python 中无限循环迭代器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12944882/

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