Python循環
一般來說,語句依次執行 - 例如,函數中的第一個語句首先執行,然後是第二個語句,依次類推。但是有很多時候需要多次執行同一段代碼,這就引入了循環的概念。
編程語言提供了允許更復雜的執行路徑的各種控制結構。
循環語句允許多次執行語句或語句組。下圖說明了一個循環語句流程結構 -
Python編程語言提供以下類型的循環來處理循環需求。
編號
循環
描述
1
while循環
在給定條件爲TRUE
時,重複一個語句或一組語句。 它在執行循環體之前測試狀態。
2
for循環
多次執行一系列語句,並縮寫管理循環變量的代碼。
3
嵌套循環
可以使用一個或多個循環在while
或for
循環中。
循環控制語句
循環控制語句從正常順序更改執行。 當執行離開範圍時,在該範圍內創建的所有自動對象都將被銷燬。
Python支持以下控制語句。
編號
控制語句
描述
1
break語句
終止循環語句並將執行轉移到循環之後的語句。
2
continue語句
使循環跳過其主體的剩餘部分,並立即重新測試其狀態以進入下一次迭代。
3
pass語句
當語法需要但不需要執行任何命令或代碼時,Python中就可以使用pass
語句,此語句什麼也不做,用於表示「佔位」的代碼,有關實現細節後面再寫
下面簡單地看一下循環控制語句。
迭代器和生成器
迭代器(Iterator)是允許程序員遍歷集合的所有元素的對象,而不管其具體實現。在Python中,迭代器對象實現了iter()
和next()
兩種方法。
String
,List
或Tuple
對象可用於創建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()