Python循環(huán)控制詳解
技術(shù)背景
循環(huán)控制是每一門編程語言的基礎(chǔ),最常用的就是for循環(huán)和while循環(huán)。使用循環(huán)可以很大程度上簡化代碼的編寫,可讀性也很強(qiáng)。這里介紹Python的for循環(huán)基本操作和多重循環(huán)的控制。
單層for循環(huán)
這里用一個最簡單的打印數(shù)字的for循環(huán)來演示普通單層for循環(huán)的控制:
for i in (1, 2, 3): print (i)
輸出結(jié)果為:
1 2 3
值得一提的是,Pythonic的寫法使得我們可以把這一串的循環(huán)寫到一行里面:
for i in (1, 2, 3): print (i)
輸出結(jié)果是一樣的,但是可以很大程度上縮略簡單代碼的行數(shù)。對于比較復(fù)雜的循環(huán)體,建議還是分行來寫,提升代碼可讀性。
雙重for循環(huán)
我們還是使用打印數(shù)字的簡單案例:
for i in (1, 2, 3): for j in (4, 5): print (i, j)
輸出結(jié)果為:
1 4
1 5
2 4
2 5
3 4
3 5
那么類似的,雙重循環(huán)也可以使用一些Pythonic的寫法:
from itertools import product for i, j in product((1, 2, 3), (4, 5)): print (i, j)
輸出結(jié)果依然是一樣的,但是代碼量從三行縮減到了兩行。這里順帶介紹另一個情況,在循環(huán)內(nèi)操作多個對象:
a = (1, 2, 3) b = (4, 5, 6) for i in range(3): print (a[i], b[i])
輸出結(jié)果為:
1 4
2 5
3 6
那么其實也可以用zip打包的方法進(jìn)行循環(huán):
for i, j in zip((1, 2, 3), (4, 5, 6)): print (i, j)
當(dāng)然,輸出結(jié)果也是跟上面的案例一致的。
單層循環(huán)控制
常用的控制句柄就是continue
,break
和pass
,然后結(jié)合if...elif...else
來使用。還是用這個打印數(shù)字的示例,但是我們只打印奇數(shù):
for i in (1, 2, 3): if i % 2 == 1: print (i)
輸出結(jié)果為:
1
3
這里條件控制內(nèi)容為:當(dāng)?shù)玫降臄?shù)為奇數(shù)時,打印該數(shù)
。而如果為偶數(shù),則執(zhí)行if從句之外的內(nèi)容,因為這里函數(shù)之外沒有其他操作,因此就不打印。如果需要打印,我們可以加上一個打印操作:
for i in (1, 2, 3): if i % 2 == 1: print (i) else: print ('Even: {}'.format(i))
輸出結(jié)果為:
1
Even: 2
3
條件判斷可以結(jié)合continue來使用,continue表示跳過余下所有的操作,執(zhí)行循環(huán)的下一步。例如上面這個例子,假設(shè)我們不使用else語句,直接在if內(nèi)部加上一個continue,也是可以實現(xiàn)同樣功能的:
for i in (1, 2, 3): if i % 2 == 1: print (i) continue print ('Even: {}'.format(i))
輸出結(jié)果為:
1
Even: 2
3
如果說達(dá)到條件不想繼續(xù)循環(huán)了,可以使用break:
for i in (1, 2, 3): if i % 2 == 1: print (i) else: print ('Even: {}'.format(i)) break
輸出結(jié)果為:
1
Even: 2
這里到出現(xiàn)第一個偶數(shù)之后,就退出了循環(huán)。
多層循環(huán)控制
對于if和continue、break等語句的使用邏輯,在多層循環(huán)下和單層循環(huán)是一致的。但是這里break只能跳出一層循環(huán),不能跳出兩層循環(huán):
for i in (1, 2, 3): for j in (4, 5): if i + j == 6: break print (i, j)
輸出結(jié)果為:
1 4
3 4
3 5
這里輸出結(jié)果跳過了(1,5),(2,4),(2,5)
這幾個組合,但是后面的依然都可以正常的輸出。如果想退出多層循環(huán)應(yīng)該怎么操作呢?可以參考下下面這個案例:
for i in (1, 2, 3): for j in (4, 5): if i + j == 7: break print (i, j) else: continue break
輸出結(jié)果為:
1 4
1 5
2 4
這里我們稍微改了一下條件,當(dāng)i+j=7
時,退出所有循環(huán)。這里在內(nèi)部循環(huán)中觸發(fā)了一個break之后,到外層循環(huán)會跳過else去執(zhí)行第二個break,也就是退出所有的循環(huán)。但是如果內(nèi)部循環(huán)中沒有觸發(fā)break,也就是滿足if的條件,那么到了外層循環(huán)就會進(jìn)入到else的語句中,也就是執(zhí)行continue語句。因此,如果需要在滿足條件時退出多層的循環(huán),那么就使用for...[for...if...]else...break
這樣的形式去寫就可以了,然后把外層循環(huán)非退出場景的任務(wù)寫到else語句下就可以了。
在上面這個案例中,假如沒有設(shè)定這個continue語句,那么結(jié)果會是這樣的:
for i in (1, 2, 3): for j in (4, 5): if i + j == 7: break print (i, j) break
輸出:
1 4
1 5
也就是說,不論是否滿足內(nèi)循環(huán)里面的if條件,到了外層循環(huán)都是直接break退出,所以一般我們還是會通過else...continue
來繼續(xù)執(zhí)行外層循環(huán)。
總結(jié)概要
本文介紹了Python編程語言中關(guān)于for循環(huán)和if條件控制的一些基本使用。包含了單層循環(huán)的退出機(jī)制和多層循環(huán)的退出機(jī)制,使得我們在滿足特定條件時,可以直接結(jié)束多層循環(huán)。
版權(quán)聲明
本文首發(fā)鏈接為:https://www.cnblogs.com/dechinphy/p/for-control.html
作者ID:DechinPhy
更多原著文章:https://www.cnblogs.com/dechinphy/
請博主喝咖啡:https://www.cnblogs.com/dechinphy/gallery/image/379634.html
到此這篇關(guān)于Python循環(huán)控制的文章就介紹到這了,更多相關(guān)Python循環(huán)控制內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python發(fā)送手機(jī)動態(tài)驗證碼代碼實例
這篇文章主要介紹了Python發(fā)送手機(jī)動態(tài)驗證碼代碼實例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-02-02python爬蟲爬取股票的北上資金持倉數(shù)據(jù)
這篇文章主要介紹了python爬蟲爬取股票的北上資金持倉數(shù)據(jù),文章基于python的相關(guān)資料展開爬取數(shù)據(jù)的詳細(xì)內(nèi)容,具有一定的參考價值,需要的小伙伴可以參考一下2022-05-05Python進(jìn)階學(xué)習(xí)之pandas中read_csv()用法詳解
python中數(shù)據(jù)處理是比較方便的,經(jīng)常用的就是讀寫文件,提取數(shù)據(jù)等,本文主要介紹其中的一些用法,這篇文章主要給大家介紹了關(guān)于Python進(jìn)階學(xué)習(xí)之pandas中read_csv()用法的相關(guān)資料,需要的朋友可以參考下2024-03-03Python實現(xiàn)獲取漢字偏旁部首的方法示例【測試可用】
這篇文章主要介紹了Python實現(xiàn)獲取漢字偏旁部首的方法,涉及Python基于第三方模塊進(jìn)行漢字處理的相關(guān)操作技巧,需要的朋友可以參考下2018-12-12Python使用pip安裝報錯:is not a supported wheel on this platform的解決
這篇文章主要介紹了Python使用pip安裝報錯:is not a supported wheel on this platform的解決方法,結(jié)合實例形式分析了在安裝版本正確的情況下pip安裝報錯的原因與相應(yīng)的解決方法,需要的朋友可以參考下2018-01-01Python報錯NameError: name ‘secrets‘ is not
在使用Python進(jìn)行安全編程時,我們經(jīng)常需要使用secrets模塊來生成安全的隨機(jī)數(shù),但是卻遇到這個問題,本文主要介紹了Python報錯NameError: name ‘secrets‘ is not defined解決,感興趣的可以了解一下2024-06-06