【发布时间】:2016-04-09 22:13:49
【问题描述】:
这是一个人为的例子:
from itertools import cycle
def foobar():
A = [1,2,3,4,5]
B = [6,7,8,9,10]
it = cycle(A)
tmp=0
for item in it:
print item, tmp
if tmp>10:
it=cycle(B) #is this possible?
if tmp>30:
return tmp
tmp+=item
输出:
1 0
2 1
3 3
4 6
5 10
1 15
2 16
3 18
4 21
5 25
1 30
2 31
我试图在 for 循环中迭代一个可迭代对象,直到满足一个条件,此时我重新定义 it 以便它使用相同的循环体迭代另一个列表。
代码在当前形式下无法按照我希望的方式运行:它继续使用 cycle(A),即使在我重新定义 it=cycle(B) 之后也是如此。我想存在某种范围问题,循环内的代码无法修改循环条件。有什么方法可以完成我在这里尝试做的事情,还是我需要制作重复或嵌套的 for 循环来迭代多个列表?
【问题讨论】:
标签: python-2.7 for-loop scope iterator