如何在Python中使用break跳出多層迴圈?

來源:互聯網
上載者:User
for a in xrange(10):    for b in xrange(20):        if something(a, b):            # Break the inner loop...            break    else:        # Continue if the inner loop wasn't broken.        continue    # Inner loop was broken, break the outer.    break

回複內容:

我又有些忍不住要說了……你們學python是從來不看官方文檔,只是跟著某某某中文教程一路擼下去的嗎?

Python的迴圈體自己就有else分支!
Python的迴圈體自己就有else分支!
Python的迴圈體自己就有else分支!

不只是if有,while和for都有else分支。 迴圈體的else分支觸發條件是迴圈正常結束。如果迴圈內被break跳出,就不執行else。所以這個邏輯是:如果迴圈內break了,不觸發else,則執行下一句外層迴圈中的break;如果正常結束,執行else分支裡的continue,直接跳轉到外層迴圈的下一輪,跳過了第二個break。

不過這寫法真尼瑪醜啊……搞個布爾量會死麼……

————————

其實感覺比較正確的姿勢應該是拿個函數包起來然後用return……拋個異常外面接著不就完了for和while的else子句用於迴圈後處理,僅在迴圈正常結束時執行。

問題中所舉的例子,設定一個flag變數,代碼看起來會更直觀一些。

難說哪種寫法好,我倒挺喜歡用else分支的。
  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.