在Python中,遍历列表项时如何在到达末尾后从0开始?

3 投票
3 回答
4245 浏览
提问于 2025-04-17 08:10

我正在用Python遍历一个列表。

mylist = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k']
i = 0
while i <= 27:
    print mylist[i]
    i +=1

我想要一个简单优雅的解决方案,这样当i等于11时,它能从我的列表中抓取到'a'。我不想用复杂的if语句来检查是否到达了列表的末尾。而且,我也不想创建一个新的列表,把我的列表重复很多遍,因为这些列表都比较长。

有没有简单的方法可以做到这一点?

3 个回答

1

根据Falmarri的回答,我忍不住想补充一下:

def modrange(first, last, modulus, step = 1):
    for i in xrange(first, last, step):
        yield i % modulus

现在你可以把你的while循环改写成:

for i in modrange(0, 27, len(mylist)):
    print mylist[i]
4

这是一个链接,指向Python的官方文档,具体是关于一个叫做“itertools.cycle”的功能。这个功能可以让你在一个列表或序列中循环往复地访问元素。简单来说,就是你可以不断地从头到尾走一遍这个列表,走完后再从头开始,像个循环一样。想了解更多细节,可以点击上面的链接去看看。

12

试试取模运算:

mylist = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k']
i = 0
while i <= 27:
    print mylist[i % len(mylist)]
    i +=1

撰写回答