欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python中跳出循環(huán)的兩種方法

 更新時(shí)間:2024年09月20日 11:54:33   作者:在線碼BUG  
在 Python 中,跳出循環(huán)通常指的是使用 break 語(yǔ)句來(lái)結(jié)束一個(gè)循環(huán)結(jié)構(gòu),比如 for 循環(huán)或 while 循環(huán),當(dāng)程序執(zhí)行到 break 語(yǔ)句時(shí),循環(huán)會(huì)立即終止,程序會(huì)繼續(xù)執(zhí)行循環(huán)后面的代碼,本文給大家介紹了Python中跳出循環(huán)的兩種方法,需要的朋友可以參考下

我們經(jīng)常遇到循環(huán)在進(jìn)行到某一個(gè)特定的值時(shí),需要跳出循環(huán),或跳過(guò)這個(gè)值,python中早已為我們準(zhǔn)備了這樣的參數(shù):break,continue

比如下面的for循環(huán):

for i in range(1,10):
    print('循環(huán)了',i,'次')

結(jié)果顯而易見(jiàn)如圖: 

當(dāng)我們想在第三次結(jié)束這個(gè)循環(huán)時(shí)可以用break這個(gè)參數(shù)來(lái)跳出循環(huán),代碼如下

for i in range(1,10):
    if i==3:
        break
    else:
        print('循環(huán)了',i,'次')

這是for循環(huán)就只會(huì)進(jìn)行兩次循環(huán)就會(huì)停止,如果如下:

還有一種參數(shù)continue,這個(gè)參數(shù)表示的是跳出本次循環(huán),即本次循環(huán)不參與運(yùn)算,代碼使用如下:

for i in range(1,10):
    if i==3:
        continue
    else:
        print('循環(huán)了',i,'次')

結(jié)果如下:

當(dāng)i=3時(shí),循環(huán)是不進(jìn)行的也就沒(méi)有了輸出結(jié)果。 

拓展:Python 跳出嵌套循環(huán)的5種方法

很多人說(shuō) Python 是給很優(yōu)雅的語(yǔ)言,但凡事都有個(gè)弱點(diǎn),有些時(shí)候?qū)τ谀撤N情況,用 Python 實(shí)現(xiàn)起來(lái)卻不那么"優(yōu)雅"。

例如下面的例子,我們想要跳出這個(gè)嵌套循環(huán):

for a in list_a:

for b in list_b:

if condition(a,b):

break

關(guān)鍵詞 break 只能跳出這個(gè)循環(huán)中的內(nèi)循環(huán)。那有沒(méi)有什么方法一次性跳出所有循環(huán)? Python 里有沒(méi)有哪個(gè)內(nèi)置的關(guān)鍵詞可以實(shí)現(xiàn)呢?

不幸的的是,沒(méi)有。

有句老話講的好,"沒(méi)有對(duì)比就沒(méi)有傷害", Python 做不到,其它的語(yǔ)言卻可以,比如萬(wàn)人鄙視的 PHP:

foreach ($a_list as $a)

{

foreach ($b_list as $b)

{

if (condition($a, $b))

{

break 2; // 跳出兩次循環(huán)

}

}

}

在 PHP 里 break 關(guān)鍵詞后面跟著一個(gè)數(shù)組,表示要跳出循環(huán)的次數(shù),默認(rèn)值是1,表示跳出一次循環(huán)。

這是一個(gè)很簡(jiǎn)潔命令的解決方案,這里必須夸一句 PHP,這里它表現(xiàn)的不錯(cuò)。

不過(guò) Python 畢竟是很靈活的語(yǔ)言,我們有很多方法可以解決上面的問(wèn)題,下面我就介紹 5 中跳出嵌套循環(huán)的方法。

1. 使用"旗幟"變量

這是個(gè)有效的解決方案,我們定義一個(gè)變量,作為一個(gè)"旗幟",例如:

# 添加"旗幟"變量

break_out_flag = False

for i in range(5):

for j in range(5):

if j == 2 and i == 0:

break_out_flag = True

break

if break_out_flag:

break

如上面的代碼,break_out_flag 作為一個(gè)"旗手"告訴這個(gè)程序該跳出這個(gè)外循環(huán)了。

這個(gè)代碼在執(zhí)行上沒(méi)什么問(wèn)題,不過(guò)這顯得我們的代碼有點(diǎn)亂,因?yàn)槲覀円昧诵碌淖兞咳ソ鉀Q這個(gè)問(wèn)題,這個(gè)新變量并非非要引入的。

2. 引發(fā)異常

如果 break 關(guān)鍵詞不能達(dá)到我們的期望,那么是否可以引入其他的操作呢,比如 Python 的異常處理技術(shù),我們可以使用它跳出嵌套循環(huán):

# 引發(fā)異常

try:

for i in range(5):

for j in range(5):

if j == 2 and i == 0:

raise StopIteration

except StopIteration:

pass

就如上面代碼所示,我們把異常"exception"當(dāng)做關(guān)鍵詞 break 使用,這樣就可以一次跳出所有循環(huán)。

3. 使用相同的條件語(yǔ)句

由于一個(gè)條件語(yǔ)句可以中斷一次循環(huán),那么使用相同的條件語(yǔ)句同樣也可以再一次中斷一個(gè)循環(huán),例如:

# 使用相同的條件語(yǔ)句

for i in range(5):

for j in range(5):

if j == 2 and i == 0:

break

if j == 2 and i == 0:

break

上面的代碼可行,但并不是一個(gè)好的解決方案,至少在效率上很差,因?yàn)橹貜?fù)執(zhí)行一個(gè)條件語(yǔ)句會(huì)浪費(fèi)很多時(shí)間。

4. 使用 For-Else 語(yǔ)句

Python 里有一個(gè)很特殊的語(yǔ)句:"for-else"。 它并不流行以至于很少有人知道它,因?yàn)榱?xí)慣上 else 是搭配 if 來(lái)使用。

不過(guò)對(duì)于這個(gè)問(wèn)題,它卻是很有幫助:

# 使用 For-Else 語(yǔ)句

for i in range(5):

for j in range(5):

if j == 2 and i == 0:

break

else: # 僅在內(nèi)循環(huán)不中斷時(shí)執(zhí)行

continue

break

上面的代碼中顯示了 for-else 語(yǔ)句的優(yōu)勢(shì),因?yàn)?else 下面的語(yǔ)句只有當(dāng)內(nèi)循環(huán)執(zhí)行完成并沒(méi)有任何中斷的時(shí)候才執(zhí)行。

如果對(duì) for-else 還不熟悉,可以看一下下面的代碼,是 for-else "翻譯"過(guò)來(lái)的寫(xiě)法:

# 和 for-else 一樣的

for i in range(5):

for j in range(5):

if j == 2 and i == 0:

break

if not (j == 2 and i == 0):

continue

break

總之,這個(gè)方法很可以,就是 for-else 這種形式不好理解。

5. 將嵌套循環(huán)放在一個(gè)函數(shù)里

如果我們將嵌套循環(huán)放在一個(gè)函數(shù)中,那么跳出嵌套循環(huán)是非常簡(jiǎn)單的,因?yàn)槲覀兛梢允褂?return 這個(gè)關(guān)鍵詞替代 break 。

# 將嵌套循環(huán)放在一個(gè)函數(shù)里

def check_sth():

for i in range(5):

for j in range(5):

if j == 2 and i == 0:

return

check_sth() # 執(zhí)行這個(gè)函數(shù)

如上所示,這個(gè)解決方案就顯得更加優(yōu)雅了,既不需要"旗幟"變量,也不需要異常處理或是 for-else 語(yǔ)法以及多余的條件判斷。

函數(shù)的用法在 Python 里是很靈活的,我們可以很容易的創(chuàng)建一個(gè)嵌套函數(shù)或是一個(gè)閉包函數(shù)。如果這個(gè)跳出嵌套循環(huán)的函數(shù)在調(diào)用它的函數(shù)里只使用一次,那么我們可以這樣寫(xiě):

def out_func():

# 這里干點(diǎn)啥

def check_sth():

for i in range(5):

for j in range(5):

if j == 2 and i == 0:

return

# 這里干點(diǎn)別的

check_sth() # 執(zhí)行這個(gè)函數(shù)

# 這里繼續(xù)干

不過(guò),使用嵌套函數(shù)看起來(lái)并不怎么"優(yōu)雅"。

總結(jié)

這里我們了解了5種跳出嵌套循環(huán)的方法,雖然每種方法都沒(méi)有 PHP 來(lái)的簡(jiǎn)單直接,但我們也是可以實(shí)現(xiàn)這樣的操作地。作為編程人員我們應(yīng)該了解語(yǔ)言的特性,在不同情況下用不同的方法解決問(wèn)題。

到此這篇關(guān)于Python中跳出循環(huán)的兩種方法的文章就介紹到這了,更多相關(guān)Python跳出循環(huán)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 在Pycharm中對(duì)代碼進(jìn)行注釋和縮進(jìn)的方法詳解

    在Pycharm中對(duì)代碼進(jìn)行注釋和縮進(jìn)的方法詳解

    今天小編就為大家分享一篇在Pycharm中對(duì)代碼進(jìn)行注釋和縮進(jìn)的方法詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-01-01
  • Python爬蟲(chóng)基礎(chǔ)之requestes模塊

    Python爬蟲(chóng)基礎(chǔ)之requestes模塊

    這篇文章主要介紹了Python爬蟲(chóng)基礎(chǔ)之requestes模塊,文中有非常詳細(xì)的代碼示例,對(duì)正在學(xué)習(xí)python爬蟲(chóng)的小伙伴們有非常好的幫助,需要的朋友可以參考下
    2021-04-04
  • Python iter()函數(shù)用法實(shí)例分析

    Python iter()函數(shù)用法實(shí)例分析

    這篇文章主要介紹了Python iter()函數(shù)用法,結(jié)合實(shí)例形式詳細(xì)分析了Python iter()函數(shù)的功能、使用方法及相關(guān)操作注意事項(xiàng),需要的朋友可以參考下
    2018-03-03
  • pandas dataframe rolling移動(dòng)計(jì)算方式

    pandas dataframe rolling移動(dòng)計(jì)算方式

    在Pandas中,rolling()方法用于執(zhí)行移動(dòng)窗口計(jì)算,常用于時(shí)間序列數(shù)據(jù)分析,例如,計(jì)算某商品的7天或1個(gè)月銷(xiāo)售總量,可以通過(guò)rolling()輕松實(shí)現(xiàn),該方法的關(guān)鍵參數(shù)包括window(窗口大?。?min_periods(最小計(jì)算周期)
    2024-09-09
  • python3.0 模擬用戶登錄,三次錯(cuò)誤鎖定的實(shí)例

    python3.0 模擬用戶登錄,三次錯(cuò)誤鎖定的實(shí)例

    下面小編就為大家?guī)?lái)一篇python3.0 模擬用戶登錄,三次錯(cuò)誤鎖定的實(shí)例。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-11-11
  • 利用tkinter改變下拉列表(Combobox)的選項(xiàng)值

    利用tkinter改變下拉列表(Combobox)的選項(xiàng)值

    這篇文章主要介紹了利用tkinter改變下拉列表(Combobox)的選項(xiàng)值,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-01-01
  • Django項(xiàng)目使用CircleCI的方法示例

    Django項(xiàng)目使用CircleCI的方法示例

    這篇文章主要介紹了Django項(xiàng)目使用CircleCI的方法示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-07-07
  • Python 使用tf-idf算法計(jì)算文檔關(guān)鍵字權(quán)重并生成詞云的方法

    Python 使用tf-idf算法計(jì)算文檔關(guān)鍵字權(quán)重并生成詞云的方法

    這篇文章主要介紹了Python 使用tf-idf算法計(jì)算文檔關(guān)鍵字權(quán)重,并生成詞云,本文通過(guò)實(shí)例代碼給大家介紹的非常想詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-03-03
  • Python Map 函數(shù)詳解

    Python Map 函數(shù)詳解

    這篇文章主要為大家介紹了Python Map 函數(shù),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助
    2021-12-12
  • 在Python中使用xlrd和xlwt讀寫(xiě)Excel文件代碼實(shí)例

    在Python中使用xlrd和xlwt讀寫(xiě)Excel文件代碼實(shí)例

    這篇文章主要介紹了在Python中使用xlrd和xlwt讀寫(xiě)Excel文件代碼實(shí)例,python操作excel主要用到xlrd和xlwt兩個(gè)庫(kù),即xlrd是讀excel,xlwt是寫(xiě)excel庫(kù),文中提供了部分實(shí)例代碼,需要的朋友可以參考下
    2023-08-08

最新評(píng)論