在Python中,遍历列表项时如何在到达末尾后从0开始?
我正在用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