2015-06-14 81 views
1

我正在寻找一种在每次调用该函数时循环访问列表中的数字的方法。使用生成器循环访问列表中的数字

我已经使用了一个生成器,它一次返回列表1的成员,但是在函数返回最后一个元素后,我还没有找到回到列表开头的方法。

def returnSeq(self, numRows): 
    for seq in [0, 1, 2, 3, 2, 1]: 
     yield seq 

如果有更好的方法来实现这一点,我将不胜感激。

谢谢你在前进,

+2

[itertools.cycle](https://docs.python.org/2/library/itertools.html#itertools.cycle) –

回答

0

使用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模中元素的个数名单。这意味着它是一个无限生成器,可以重复生成列表中的元素。

+0

或'while'循环中的'for'循环。 –

+0

谢谢西蒙! – giyoon21c

5

你基本上重新实现itertools.cycle

import itertools 

itertools.cycle([0, 1, 2, 3, 2, 1]) # <- there's your infinite generator 
+0

谢谢你,阿美。 – giyoon21c