我在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的新列表,因为这些列表相当长。
有一种简单的方法吗?
答案 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]