Python中斷多重循環(huán)的方法有哪些-創(chuàng)新互聯(lián)

這篇文章主要介紹了Python中斷多重循環(huán)的方法有哪些,具有一定借鑒價(jià)值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

網(wǎng)站設(shè)計(jì)制作、網(wǎng)站設(shè)計(jì)過(guò)程中,需要針對(duì)客戶(hù)的行業(yè)特點(diǎn)、產(chǎn)品特性、目標(biāo)受眾和市場(chǎng)情況進(jìn)行定位分析,以確定網(wǎng)站的風(fēng)格、色彩、版式、交互等方面的設(shè)計(jì)方向。創(chuàng)新互聯(lián)還需要根據(jù)客戶(hù)的需求進(jìn)行功能模塊的開(kāi)發(fā)和設(shè)計(jì),包括內(nèi)容管理、前臺(tái)展示、用戶(hù)權(quán)限管理、數(shù)據(jù)統(tǒng)計(jì)和安全保護(hù)等功能。

I. 跳出單循環(huán)

不管是什么編程語(yǔ)言,都有可能會(huì)有跳出循環(huán)的需求,比如枚舉時(shí),找到一個(gè)滿(mǎn)足條件的數(shù)就終止。跳出單循環(huán)是很簡(jiǎn)單的,比如

for i in range(10):
  if i > 5:
    print i
    break

然而,我們有時(shí)候會(huì)需要跳出多重循環(huán),而break只能夠跳出一層循環(huán),比如

for i in range(10):
  for j in range(10):
    if i+j > 5:
      print i,j
      break

這樣的代碼并非說(shuō)找到一組i+j > 5就停止,而是連續(xù)找到10組,因?yàn)閎reak只跳出了for j in range(10)這一重循環(huán)。那么,怎么才能跳出多重呢?在此記錄備忘一下。

II. 跳出多重循環(huán)

事實(shí)上,Python的標(biāo)準(zhǔn)語(yǔ)法是不支持跳出多重循環(huán)的,所以只能利用一些技巧,大概的思路有:寫(xiě)成函數(shù)、利用笛卡爾積、利用調(diào)試。

當(dāng)然最常用的思路是使用變量標(biāo)記法

def f():
  flag = 0
  for i in range(10):
    for j in range(i):
      if i+j>5:
        print i,j
        flag = 1
        break
    if flag == 1:
      break

if __name__ == "__main__":
  f()

寫(xiě)成函數(shù)

在Python中,函數(shù)運(yùn)行到return這一句就會(huì)停止,因此可以利用這一特性,將功能寫(xiě)成函數(shù),終止多重循環(huán),例如

def work():
  for i in range(10):
    for j in range(10):
      if i+j > 5:
        return i,j
print work()

利用笛卡爾積

這種方法的思路就是,既然可以跳出單循環(huán),我就將多重循環(huán)改寫(xiě)為單循環(huán),這可以利用itertools中的笛卡爾積函數(shù)product,例如

from itertools import product
for i,j in product(range(10), range(10)):
  if i+j > 5:
    print i,j
    break

利用調(diào)試模式

笛卡爾積的方式很巧妙,也很簡(jiǎn)潔,但它只能用于每次循環(huán)的集合都是獨(dú)立的情形,假如每層循環(huán)都與前一層緊密相關(guān),就不能用這種技巧了。這時(shí)候可以用第一種方法,將它寫(xiě)成函數(shù),另外,還可以利用調(diào)試模式。這個(gè)利用了調(diào)試模式中,只要出現(xiàn)報(bào)錯(cuò)就退出的原理,它偽裝了一個(gè)錯(cuò)誤出來(lái)。

class Found(Exception):
  pass

try:
  for i in range(10):
    for j in range(i): #第二重循環(huán)跟第一重有關(guān)
      if i + j > 5:
        raise Found
except Found:
  print i, j

感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享的“Python中斷多重循環(huán)的方法有哪些”這篇文章對(duì)大家有幫助,同時(shí)也希望大家多多支持創(chuàng)新互聯(lián),關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,更多相關(guān)知識(shí)等著你來(lái)學(xué)習(xí)!

網(wǎng)站標(biāo)題:Python中斷多重循環(huán)的方法有哪些-創(chuàng)新互聯(lián)
當(dāng)前地址:http://muchs.cn/article6/dpssig.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站導(dǎo)航搜索引擎優(yōu)化、動(dòng)態(tài)網(wǎng)站、關(guān)鍵詞優(yōu)化微信小程序、做網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

網(wǎng)站優(yōu)化排名