在我們學過的算法課程中,時常會提到迭代一詞。算法中的迭代,指已知一個初始值,再根據一定的規律進行計算,得到下一個值的過程。而在編程中,我們也經常用到它,那就是循環。
1、迭代
實例,遍歷一個列表
L = ['jc','xf','xbz','xdg']
for i in L:
print(i,end='\t')
輸出:jc xf xbz xdg
如上,我們循環打印了一個列表,這個過程,就叫做迭代。
簡而言之,迭代就是循環遍歷可迭代對象的過程。
2、可迭代對象
- 定義
在python中,迭代是通過for....in(可迭代對象)
來實現的,而在上面的例子中,我們使用for…in 遍歷了一個列表,所以列表就是一個可迭代對象。即能使用for…in 來遍歷的對象叫做可迭代對象。 - 如何判斷一個對象是否是可迭代對象?
在不明確對象類型的時候,爲了避免迭代報錯,我們需要先判斷是否是迭代對象,這可以藉助Iterable模塊實現。
from typing import Iterable
L = ['jc','xf','xbz','xdg']
print(isinstance(L,Iterable))
輸出:True
isinstance: 判斷一個對象是否是某個類的實例,是則返回True,否則返回 False。
3、迭代器
個人理解:能使用next(iterator)
依次取值的對象。
-
使用流程
(1) 使用iter(iterable/可迭代對象)
函數從一個可迭代對象得到一個迭代器。
(2) 通過next(iterator/迭代器)
從迭代器中依次取值。 -
實例
L = ['jc','xf','xbz','xdg'] iter_tool = iter(L) #得到迭代器 print(next(iter_tool)) print(next(iter_tool)) print(next(iter_tool)) print(next(iter_tool)) print(next(iter_tool))
輸出:
-
解決StopIteration異常
上面的實例中,因爲只有4個元素,寫了5次next()取值,所以報了StopIteration
異常,這時我們可以使用try...except
來處理。
改進如下:L = ['jc','xf','xbz','xdg'] iter_tool = iter(L) #得到迭代器 while True: try: print(next(iter_tool)) except StopIteration: break #跳出while循環
參考文章:
[1] zsj.python之路——python之迭代器(iterator)詳解