Python開(kāi)發(fā)常用五種循環(huán)方式的場(chǎng)景性能比較
Python是一門(mén)高級(jí)編程語(yǔ)言,其擁有多種循環(huán)方式,如for循環(huán)、while循環(huán)、do-while循環(huán)等。
在編寫(xiě)程序時(shí),需要根據(jù)不同的場(chǎng)景和效率要求選擇合適的循環(huán)方式。
下面將逐個(gè)分析Python所有的循環(huán)執(zhí)行效率和適用場(chǎng)景。
1.for 循環(huán)
for循環(huán)通常用于遍歷序列(如列表、元組、字符串)或其他可迭代對(duì)象,效率較高。
for循環(huán)的執(zhí)行時(shí)間與序列長(zhǎng)度成正比,因此在處理較大的數(shù)據(jù)集時(shí),for循環(huán)的效率較高。
例如,遍歷一個(gè)包含100萬(wàn)個(gè)元素的列表,for循環(huán)的執(zhí)行時(shí)間僅需幾秒鐘。
for循環(huán)的基本語(yǔ)法為:
for?value?in?sequence: ????statement(s)
其中,value為序列中的每一個(gè)元素,sequence為需要遍歷的序列,statement(s)為循環(huán)體中需要執(zhí)行的語(yǔ)句。
for循環(huán)適用于需要遍歷序列或其他可迭代對(duì)象的場(chǎng)景,例如:
- 遍歷列表、元組、字符串等序列;
- 遍歷字典、集合等其他可迭代對(duì)象;
- 遍歷文件中的每一行數(shù)據(jù);
- 遍歷網(wǎng)絡(luò)數(shù)據(jù)等。
2.while 循環(huán)
while循環(huán)適用于需要反復(fù)執(zhí)行某個(gè)操作,但不知道具體執(zhí)行次數(shù)的場(chǎng)景。
while循環(huán)的執(zhí)行效率與循環(huán)次數(shù)有關(guān),因此在循環(huán)次數(shù)較少的情況下,while循環(huán)的效率比較高。
但是,如果循環(huán)次數(shù)太多,會(huì)導(dǎo)致性能下降。
while循環(huán)的基本語(yǔ)法為:
while?condition: ????statement(s)
其中,condition為循環(huán)條件,statement(s)為循環(huán)體中需要執(zhí)行的語(yǔ)句。
while循環(huán)適用于需要反復(fù)執(zhí)行某個(gè)操作,但不知道具體執(zhí)行次數(shù)的場(chǎng)景,例如:
- 讀取用戶(hù)輸入,直到輸入正確為止;
- 模擬游戲等需要不斷循環(huán)的場(chǎng)景;
- 處理需要反復(fù)執(zhí)行的任務(wù)等。
需要注意的是,如果循環(huán)條件一直為T(mén)rue,會(huì)導(dǎo)致無(wú)限循環(huán),因此需要在循環(huán)體中加入break語(yǔ)句來(lái)跳出循環(huán)。
3.do-while 循環(huán)
do-while循環(huán)是Python中沒(méi)有原生支持的循環(huán)方式,但可以通過(guò)while循環(huán)和break語(yǔ)句來(lái)實(shí)現(xiàn)。
do-while循環(huán)適用于需要至少執(zhí)行一次循環(huán)的場(chǎng)景。
do-while循環(huán)的執(zhí)行效率與while循環(huán)類(lèi)似,取決于循環(huán)次數(shù)。
do-while循環(huán)的基本語(yǔ)法為:
while?True: ????statement(s) ????if?not?condition: ????????break
其中,True表示循環(huán)至少執(zhí)行一次,statement(s)為循環(huán)體中需要執(zhí)行的語(yǔ)句,condition為循環(huán)條件。
do-while循環(huán)適用于需要至少執(zhí)行一次循環(huán)的場(chǎng)景,例如:
讀取文件中的數(shù)據(jù),并對(duì)數(shù)據(jù)進(jìn)行處理;
處理需要至少執(zhí)行一次的任務(wù)等。
需要注意的是,在循環(huán)體中需要加入break語(yǔ)句來(lái)跳出循環(huán)。
4.for-else 循環(huán)
for-else循環(huán)在Python中也是比較常用的一種循環(huán)方式,它可以在for循環(huán)結(jié)束后執(zhí)行一些額外的代碼。
for-else循環(huán)的執(zhí)行效率與for循環(huán)類(lèi)似,取決于序列的長(zhǎng)度。
for-else循環(huán)的基本語(yǔ)法為:
for?value?in?sequence: ????statement(s) else: ????statement(s)
其中,value為序列中的每一個(gè)元素,sequence為需要遍歷的序列,statement(s)為循環(huán)體中需要執(zhí)行的語(yǔ)句。
for-else循環(huán)適用于在for循環(huán)結(jié)束后需要執(zhí)行一些額外的代碼的場(chǎng)景,例如:
- 遍歷完列表后對(duì)數(shù)據(jù)進(jìn)行匯總、統(tǒng)計(jì)等操作;
- 遍歷完文件中的數(shù)據(jù)后關(guān)閉文件等。
需要注意的是,只有當(dāng)for循環(huán)正常結(jié)束時(shí),才會(huì)執(zhí)行else語(yǔ)句中的代碼。
如果在for循環(huán)中使用了break語(yǔ)句跳出循環(huán),則不會(huì)執(zhí)行else語(yǔ)句中的代碼。
5.while-else 循環(huán)
while-else循環(huán)與for-else循環(huán)類(lèi)似,也是用來(lái)在循環(huán)結(jié)束后執(zhí)行一些額外的代碼的。
while-else循環(huán)的執(zhí)行效率與while循環(huán)類(lèi)似,取決于循環(huán)次數(shù)。
while-else循環(huán)的基本語(yǔ)法為:
while?condition: ????statement(s) else: ????statement(s)
其中,condition為循環(huán)條件,statement(s)為循環(huán)體中需要執(zhí)行的語(yǔ)句。
while-else循環(huán)適用于在while循環(huán)結(jié)束后需要執(zhí)行一些額外的代碼的場(chǎng)景,例如:
- 處理需要反復(fù)執(zhí)行的任務(wù),直到任務(wù)完成;
- 處理需要不斷重試的任務(wù),直到任務(wù)成功為止。
需要注意的是,只有當(dāng)while循環(huán)正常結(jié)束時(shí),才會(huì)執(zhí)行else語(yǔ)句中的代碼。
如果在while循環(huán)中使用了break語(yǔ)句跳出循環(huán),則不會(huì)執(zhí)行else語(yǔ)句中的代碼。
綜上所述,不同的循環(huán)方式適用于不同的場(chǎng)景和效率要求。在編程時(shí),需要根據(jù)具體的需求選擇適當(dāng)?shù)难h(huán)方式。
如果需要遍歷一個(gè)序列,應(yīng)該使用for循環(huán);如果需要反復(fù)執(zhí)行某個(gè)操作,但不知道具體執(zhí)行次數(shù),可以使用while循環(huán);
如果需要至少執(zhí)行一次循環(huán),可以使用do-while循環(huán)(通過(guò)while循環(huán)和break語(yǔ)句實(shí)現(xiàn));
如果需要在循環(huán)結(jié)束后執(zhí)行一些額外的代碼,可以使用for-else循環(huán)或while-else循環(huán)。
到此這篇關(guān)于Python開(kāi)發(fā)常用五種循環(huán)方式的場(chǎng)景性能比較的文章就介紹到這了,更多相關(guān)Python循環(huán)方式內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家
相關(guān)文章
windows系統(tǒng)中python使用rar命令壓縮多個(gè)文件夾示例
這篇文章主要介紹了windows系統(tǒng)中python使用rar命令壓縮多個(gè)文件夾示例,需要的朋友可以參考下2014-05-05python小球落地問(wèn)題及解決(遞歸函數(shù))
這篇文章主要介紹了python小球落地問(wèn)題及解決(遞歸函數(shù)),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-05-05python實(shí)現(xiàn)的解析crontab配置文件代碼
這篇文章主要介紹了python實(shí)現(xiàn)的解析crontab配置文件代碼,也可以說(shuō)是python版的crontab,代碼中包含大量注釋,需要的朋友可以參考下2014-06-06Python OpenCV 直方圖的計(jì)算與顯示的方法示例
這篇文章主要介紹了Python OpenCV 直方圖的計(jì)算與顯示的方法示例,主要介紹用NumPy和Matplotlib計(jì)算和繪制直方圖,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-02-02windows10 pycharm下安裝pyltp庫(kù)和加載模型實(shí)現(xiàn)語(yǔ)義角色標(biāo)注的示例代碼
這篇文章主要介紹了windows10 pycharm下安裝pyltp庫(kù)和加載模型實(shí)現(xiàn)語(yǔ)義角色標(biāo)注,本文通過(guò)圖文實(shí)例相結(jié)合給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-05-05基于Python實(shí)現(xiàn)成語(yǔ)填空游戲的示例代碼
成語(yǔ)填空想必大家都是十分熟悉的了,特別是有在上小學(xué)的家長(zhǎng)肯定都有十分深刻的印象。當(dāng)然了你也別小看了成語(yǔ)調(diào)控小游戲,有的時(shí)候知識(shí)儲(chǔ)備不夠,你還真的不一定猜得出來(lái)是什么。本文就來(lái)用Python編寫(xiě)一個(gè)簡(jiǎn)單的成語(yǔ)填空游戲,感興趣的可以了解下2023-02-02