Python循環

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

編程語言提供了允許更復雜的執行路徑的各種控制結構。

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

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