簡體   English   中英

理解嘗試跳過循環的 N 次迭代時的錯誤

[英]Understanding errors in attempts to skip N iterations of a loop

我想跳過循環的 3 次迭代,並進行了各種嘗試。

我想知道如何正確地做到這一點,但更重要的是,我想了解為什么這些嘗試都以不同的方式失敗。 請問你能解釋一下嗎?

這些數字只是示例。 我如何真正使用它。 你的列表可能是["donut", "carrot", "apple", "apple", "burger"] ,當你到達carrot時,你發現你必須跳過兩個項目(一只狗吃了你的兩個食物)這樣你的迭代應該是["donut", "apple", "burger"] 所以你事先不知道要跳過哪些迭代。 您只需獲得要跳過的條件和迭代次數。

編號 1。這根本不會跳過任何迭代。

l = list(range(10))

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

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)

編號 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)

編號 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)

每種情況下出了什么問題,我還能嘗試什么?

您的數字 5 代碼可以正常工作,但有趣的是,您在第二個if語句中編寫cuntdown而不是countdown

這就是其他人不起作用的原因:

數字 1: Continue僅將您的代碼移動到當前正在執行的循環的下一個迭代中。 在此示例中,它只是移動到for j in range(3):而不是for i in l ,因此不會跳過原始循環的迭代。

數字 2:在這里,您在迭代列表時彈出列表的元素。 這並不是真正可取的,因為您最終會出現索引錯誤或類似的東西。

數字 3:這只會跳過一次迭代,因為一旦你的第一個Continue被執行,循環立即移動到i == 4的循環,並且剩余的Continue永遠不會執行。

數字 4: Continue 3不是與Continue一起使用的正確語法

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM