python迭代器使用 Python迭代器的用法

2021-10-11 12:26:38 字數 1774 閱讀 8826

我們在前面使用過語句「for x in列表物件」,這就表示列表物件是可迭代的(iterable)。那麼如何判斷某個物件是否可迭代呢?答案是可以使用collections.iterable類來判斷。

如下面的**所示,列表是可迭代的,整數是不可迭代的,字串是可迭代的。

>>> from collections import iterable # 引入iterable類

>>> isinstance(, iterable) # 列表是可迭代的

true

>>> isinstance(12, iterable) # 整數是不可迭代的

false

>>> isinstance("12", iterable) # 字串是可迭代的

true

另外乙個概念是迭代器(iterator)。它可以作為內建函式 next() 的引數,每次按照一定順序得到其中乙個元素。但比較有趣的是,列表不是迭代器。同樣可以用 collections.iterator 類來判斷某個物件是否是迭代器。

如下面的**所示,列表和字串都不是迭代器:

>>> from collections import iterator # 引入iterator類

>>> isinstance(, iterator) # 列表不是迭代器

false

>>> isinstance("abc", iterator) # 字串也不是迭代器

false

那麼列表是否可以作為 next() 的引數呢?答案是不可以。例如下面的**:

>>> a = [1, 2, 3] # 建立列表物件a

>>> next(a) # 使用內建的next()介面函式,發生錯誤

traceback (most recent call last):

file "", line 1, in

typeerror: list object is not an iterator

這比較容易理解,因為我們沒有指定當前位置,但可以使用另外乙個內建函式 iter() 來將其轉換成 iterator。下面的**演示了這種用法:

>>> from collections import iterable # 引入iterable和iterator類

>>> from collections import iterator

>>> a = [1, 2, 3] # 建立列表物件a

>>> isinstance(a, iterable) # 列表物件是可迭代的

true

>>> isinstance(a, iterator) # 列表物件不是迭代器

false

>>> it_a = iter(a) # 從列表物件得到迭代器it_a

>>> isinstance(it_a, iterable) # it_a是可迭代的,也是迭代器

true

>>> isinstance(it_a, iterator)

true

>>> type(it_a) # it_a是列表型迭代器

>>> next(it_a) # 得到乙個資料

>>> it_a.next() # 使用另外一種方式得到乙個資料

>>> next(it_a)

>>> next(it_a) # 沒有資料了,丟擲異常

traceback (most recent call last):

file "", line 1, in

stopiteration

迭代器的乙個特點是它只能使用一次,從頭部走到尾部。如果希望再次走一遍,只能建立乙個新的迭代器。

python迭代器使用 python怎麼使用迭代器

必須是定義了 iter 方法和next 方法的物件。python的iterator物件表示的是乙個資料流,可以把這個資料流看做是乙個有序序列,但我們卻不能提前知道序列的長度,所以iterator 的計算是惰性的,只有在需要返回下乙個資料時它才會計算 iterator物件可以被next 函式呼叫並不斷...

python學習 迭代器使用說明

在學習迭代器過程中,感覺很難理解,還是要放在例項中說明。理解迭代器的話,可以從for in 迴圈語句中。1 序列 number 1,2,3,4,5 for i in number print i 得到結果 123 45上面這個例子在學習for迴圈語句時,很容易理解。但其實,這就是乙個迭代器的用法,列...

ruby 迭代器使用方法

ruby 迭代器並不是ruby發明的.它廣泛地運用於各種物件導向語言.在lisp中也有,只是不這麼叫罷了.儘管如此,迭代器的概念並不為許多人熟悉,因此我們將在此做較為詳細的介紹.你知道,動詞 iterate 的意思是做同一件事許多遍,因此,iterator就是用來將同一件事做許多次的東西.當我們寫程...