我正在寻找一种在每次调用该函数时循环访问列表中的数字的方法。使用生成器循环访问列表中的数字
我已经使用了一个生成器,它一次返回列表1的成员,但是在函数返回最后一个元素后,我还没有找到回到列表开头的方法。
def returnSeq(self, numRows):
for seq in [0, 1, 2, 3, 2, 1]:
yield seq
如果有更好的方法来实现这一点,我将不胜感激。
谢谢你在前进,
我正在寻找一种在每次调用该函数时循环访问列表中的数字的方法。使用生成器循环访问列表中的数字
我已经使用了一个生成器,它一次返回列表1的成员,但是在函数返回最后一个元素后,我还没有找到回到列表开头的方法。
def returnSeq(self, numRows):
for seq in [0, 1, 2, 3, 2, 1]:
yield seq
如果有更好的方法来实现这一点,我将不胜感激。
谢谢你在前进,
使用while
循环:
def returnSeq(self, numRows):
i = 0
items = [0, 1, 2, 3, 2, 1]
n_items = len(items)
while True:
yield items[i]
i = (i + 1) % n_items
这不断增加i
模中元素的个数名单。这意味着它是一个无限生成器,可以重复生成列表中的元素。
或'while'循环中的'for'循环。 –
谢谢西蒙! – giyoon21c
你基本上重新实现itertools.cycle
:
import itertools
itertools.cycle([0, 1, 2, 3, 2, 1]) # <- there's your infinite generator
谢谢你,阿美。 – giyoon21c
[itertools.cycle](https://docs.python.org/2/library/itertools.html#itertools.cycle) –