Python中循环的下一次迭代
我需要在第一个循环中根据某些条件获取下一个项目,但这些条件是在内部循环中。有没有比这样做更简洁的方法?(测试代码)
ok = 0
for x in range(0,10):
if ok == 1:
ok = 0
continue
for y in range(0,20):
if y == 5:
ok = 1
continue
那在这种情况下呢?
for attribute in object1.__dict__:
object2 = self.getobject()
if object2 is not None:
for attribute2 in object2:
if attribute1 == attribute2:
# Do something
#Need the next item of the outer loop
第二个例子更好地展示了我目前的情况。我不想发布原始代码,因为它是西班牙语的。object1和object2是两个非常不同的对象,一个是对象关系映射的,另一个是网页控件。但在某些情况下,它们的两个属性有相同的值,我需要跳到外部循环的下一个项目。
5 个回答
1
你可以把它转换成一个 while 循环:
flag = False
for x in range(0, 10):
if x == 4:
flag = True
continue
变成
x = 0
while (x != 4) and x < 10:
x += 1
flag = x < 10
虽然不一定更简单,但我觉得这样看起来更好。
2
你的示例代码其实是等同于(这似乎不是你想要的):
for x in range(0, 10, 2):
for y in range(20):
if y == 5:
continue
如果你想在不使用 continue
的情况下跳到外层循环的下一个项目,可以这样做:
it = iter(range(10))
for x in it:
for y in range(20):
if y == 5:
nextx = next(it)
continue
16
把内层循环里的 continue
替换成 break
。你想要做的是跳出内层循环,所以在这里用 continue
是不对的,它的作用正好和你想要的相反。
ok = 0
for x in range(0,10):
print "x=",x
if ok == 1:
ok = 0
continue
for y in range(0,20):
print "y=",y
if y == 5:
ok = 1
break