了解尝试跳过循环的 N 次迭代时的错误

Understanding errors in attempts to skip N iterations of a loop

我想跳过一个循环的3次迭代,做了各种尝试。

我想知道如何正确地做到这一点,但更重要的是,我想了解为什么这些尝试中的每一个都以不同的方式失败。能解释一下吗?

这些数字只是示例。我如何真正使用它。您的列表可能是 ["donut", "carrot", "apple", "apple", "burger"],当您到达 carrot 时,您发现您必须跳过两项(一只狗吃掉了您的两种食物),因此您的迭代应该是 ["donut", "apple", "burger"]。所以你事先不知道要跳过哪些迭代。您只需获得要跳过的条件和迭代次数。

NUMBER 1. 这根本不会跳过任何迭代。

l = list(range(10))

for i in l:
    if i == 3:
        for j in range(3):
            continue
    print(i)

NUMBER 2. 这跳过了一些迭代,重复了一个迭代,混合了一些迭代,真是一团糟。

l = list(range(10))

for i in l:
    
    if i == 3:
        l.pop(i)
        l.pop(i+1)
        l.pop(i+2)

    print(i)

NUMBER 3. 这只跳过一次迭代。

l = list(range(10))

for i in l:
    if i == 3:
        continue
        continue
        continue
    print(i)

NUMBER 4. 这给出了语法错误。

l = list(range(10))

for i in l:
    if i == 3:
        continue 3
    print(i)

NUMBER 5. 这会跳过所有剩余的迭代。

l = list(range(10))

countdown = 0

for i in l:

    if i == 3:
        countdown = 3

    if countdown > 0:
        cuntdown = countdown - 1
        continue

    print(i)

每种情况出了什么问题,我还能尝试什么?

除了有趣的是,您在第二个 if 语句中编写了 cuntdown 而不是 countdown 之外,您的第 5 号代码将有效。

以下是其他方法不起作用的原因:

1号: Continue 只会将您的代码移动到当前正在执行的循环的下一次迭代。在此示例中,它只是移动到 for j in range(3): 的下一个循环而不是 for i in l,因此不会跳过原始循环的迭代。

2号: 在这里,您在遍历列表的同时弹出列表的元素。这并不是真正可取的,因为您最终会遇到索引错误或类似的错误。

3号: 这只会跳过一次迭代,因为一旦你的第一个 Continue 被执行,循环会立即移动到 i == 4 的循环,而其余的 Continues 永远不会被执行。

4号: Continue 3 不是与 Continue

一起使用的正确语法