在Python中,当遍历列表中的项目时,如果到达目的,如何从0开始?

时间:2011-12-11 22:38:51

标签: python list loops iteration

我在Python中迭代一个列表。

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

我正在寻找一个简单/优雅的解决方案,这样当我11岁时,它会从mylist中抓取'a'。我宁愿不使用一组复杂的if语句来检查列表的末尾是否到达。另外,我不想多次复制mylist的新列表,因为这些列表相当长。

有一种简单的方法吗?

3 个答案:

答案 0 :(得分:7)

尝试模数学运算:

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

答案 1 :(得分:4)

答案 2 :(得分:0)

根据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]