【python實用特性】- 迭代、可迭代對象、迭代器

在我們學過的算法課程中,時常會提到迭代一詞。算法中的迭代,指已知一個初始值,再根據一定的規律進行計算,得到下一個值的過程。而在編程中,我們也經常用到它,那就是循環。

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)詳解

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章