Python迴圈


一般來說,語句依次執行 - 例如,函式中的第一個語句首先執行,然後是第二個語句,依次類推。但是有很多時候需要多次執行同一段程式碼,這就引入了回圈的概念。

程式設計語言提供了允許更複雜的執行路徑的各種控制結構。

迴圈語句允許多次執行語句或語句組。下圖說明了一個迴圈語句流程結構 -

Python程式設計語言提供以下型別的迴圈來處理迴圈需求。

編號 迴圈 描述
1 while迴圈 在給定條件為TRUE時,重複一個語句或一組語句。 它在執行迴圈體之前測試狀態。
2 for迴圈 多次執行一系列語句,並縮寫管理迴圈變數的程式碼。
3 巢狀迴圈 可以使用一個或多個迴圈在whilefor迴圈中。

迴圈控制語句

迴圈控制語句從正常順序更改執行。 當執行離開範圍時,在該範圍內建立的所有自動物件都將被銷毀。

Python支援以下控制語句。

編號 控制語句 描述
1 break語句 終止迴圈語句並將執行轉移到回圈之後的語句。
2 continue語句 使迴圈跳過其主體的剩餘部分,並立即重新測試其狀態以進入下一次疊代。
3 pass語句 當語法需要但不需要執行任何命令或程式碼時,Python中就可以使用pass語句,此語句什麼也不做,用於表示「佔位」的程式碼,有關實現細節後面再寫

下面簡單地看一下迴圈控制語句。

疊代器和生成器

疊代器(Iterator)是允許程式員遍歷集合的所有元素的物件,而不管其具體實現。在Python中,迭代器物件實現了iter()next()兩種方法。

StringListTuple物件可用於建立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

發生器(generator)是使用yield方法產生或產生一系列值的函式。

當一個生成器函式被呼叫時,它返回一個生成器物件,而不用執行該函式。 當第一次呼叫next()方法時,函式開始執行,直到它達到yield語句,返回yielded值。 yield保持跟蹤,即記住最後一次執行,而第二個next()呼叫從前一個值繼續。

範例

以下範例定義了一個生成器,它為所有斐波納契數位生成一個疊代器。

#!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()