Python中循环的下一次迭代

15 投票
5 回答
40169 浏览
提问于 2025-04-15 19:04

我需要在第一个循环中根据某些条件获取下一个项目,但这些条件是在内部循环中。有没有比这样做更简洁的方法?(测试代码)

    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

撰写回答