鍍金池/ 教程/ Python/ Python循環(huán)
Python異常處理
Python循環(huán)
Python基本運(yùn)算符
Python網(wǎng)絡(luò)編程(Sockets)
Python可以開發(fā)哪些程序?
Python XML解析和處理
Python數(shù)字
Python函數(shù)
Python變量類型
Python os模塊方法
Python迭代器
Python安裝和環(huán)境配置
Python構(gòu)造函數(shù)
Python文件對(duì)象方法
Python日期和時(shí)間
Python的歷史
Python生成器
Python+MySQL數(shù)據(jù)庫操作(PyMySQL)
Python命令行參數(shù)
Python元組
Python發(fā)送郵件
Python列表
Python文件讀寫
Python教程
Python面向?qū)ο螅惡蛯?duì)象)
Python多線程編程
Python多重繼承
Python決策
Python是什么?
Python快速入門
Python繼承
Python字典
Python字符串
Python操作符重載
Python正則表達(dá)式
Python閉包
Python修飾器
Python功能特點(diǎn)
Python模塊

Python循環(huán)

一般來說,語句依次執(zhí)行 - 例如,函數(shù)中的第一個(gè)語句首先執(zhí)行,然后是第二個(gè)語句,依次類推。但是有很多時(shí)候需要多次執(zhí)行同一段代碼,這就引入了循環(huán)的概念。

編程語言提供了允許更復(fù)雜的執(zhí)行路徑的各種控制結(jié)構(gòu)。

循環(huán)語句允許多次執(zhí)行語句或語句組。下圖說明了一個(gè)循環(huán)語句流程結(jié)構(gòu) -

Python編程語言提供以下類型的循環(huán)來處理循環(huán)需求。

編號(hào) 循環(huán) 描述
1 while循環(huán) 在給定條件為TRUE時(shí),重復(fù)一個(gè)語句或一組語句。 它在執(zhí)行循環(huán)體之前測試狀態(tài)。
2 for循環(huán) 多次執(zhí)行一系列語句,并縮寫管理循環(huán)變量的代碼。
3 嵌套循環(huán) 可以使用一個(gè)或多個(gè)循環(huán)在whilefor循環(huán)中。

循環(huán)控制語句

循環(huán)控制語句從正常順序更改執(zhí)行。 當(dāng)執(zhí)行離開范圍時(shí),在該范圍內(nèi)創(chuàng)建的所有自動(dòng)對(duì)象都將被銷毀。

Python支持以下控制語句。

編號(hào) 控制語句 描述
1 break語句 終止循環(huán)語句并將執(zhí)行轉(zhuǎn)移到循環(huán)之后的語句。
2 continue語句 使循環(huán)跳過其主體的剩余部分,并立即重新測試其狀態(tài)以進(jìn)入下一次迭代。
3 pass語句 當(dāng)語法需要但不需要執(zhí)行任何命令或代碼時(shí),Python中就可以使用pass語句,此語句什么也不做,用于表示“占位”的代碼,有關(guān)實(shí)現(xiàn)細(xì)節(jié)后面再寫

下面簡單地看一下循環(huán)控制語句。

迭代器和生成器

迭代器(Iterator)是允許程序員遍歷集合的所有元素的對(duì)象,而不管其具體實(shí)現(xiàn)。在Python中,迭代器對(duì)象實(shí)現(xiàn)了iter()next()兩種方法。

String,ListTuple對(duì)象可用于創(chuàng)建Iterator。

list = [1,2,3,4]
it = iter(list) # this builds an iterator object
print (next(it)) #prints next available element in iterator
# Iterator object can be traversed using regular for statement

for x in it:
   print (x, end=" ")
or using next() function
while True:
   try:
      print (next(it))
   except StopIteration:
      sys.exit() #you have to import sys module for this

發(fā)生器(generator)是使用yield方法產(chǎn)生或產(chǎn)生一系列值的函數(shù)。

當(dāng)一個(gè)生成器函數(shù)被調(diào)用時(shí),它返回一個(gè)生成器對(duì)象,而不用執(zhí)行該函數(shù)。 當(dāng)?shù)谝淮握{(diào)用next()方法時(shí),函數(shù)開始執(zhí)行,直到它達(dá)到yield語句,返回yielded值。 yield保持跟蹤,即記住最后一次執(zhí)行,而第二個(gè)next()調(diào)用從前一個(gè)值繼續(xù)。

示例

以下示例定義了一個(gè)生成器,它為所有斐波納契數(shù)字生成一個(gè)迭代器。

#!usr/bin/python3
import sys
def fibonacci(n): #generator function
   a, b, counter = 0, 1, 0
   while True:
      if (counter > n): 
         return
      yield a
      a, b = b, a + b
      counter += 1
f = fibonacci(5) #f is iterator object

while True:
   try:
      print (next(f), end=" ")
   except StopIteration:
      sys.exit()