python迭代物件 Python迭代物件與迭代器

2021-10-13 07:50:05 字數 2411 閱讀 5927

一.迭代物件

1.概念

迭代物件:可以直接作用於for迴圈的物件統稱為可迭代物件:iterable。

2.可以直接作用於for迴圈的資料型別

(1)集合類資料型別,如list, tuple, dict, set, str等

(2)generator,包括生成器和帶yield的generator function.

以上這些直接作用於for迴圈的物件統稱為可迭代物件:iterable.

3.判斷乙個物件是不是可迭代物件(iterable)

可以使用isinstance,需要匯入模組

from collections import iterator

from collections import iterable

(1)判斷 str 型別是不是可迭代物件

isinstance('',iterable)

isinstance('abc',iterable)

print(isinstance('',iterable)) # true

print(isinstance('abc',iterable)) # true

(2)判斷 list 型別是不是可迭代物件

isinstance(,iterable)

isinstance([1,2,3,4],iterable)

print(isinstance(,iterable)) # true

print(isinstance([1,2,3,4],iterable)) # true

(3)判斷 元組 型別是不是可迭代物件

isinstance(tuple(),iterable)

isinstance((1,2,3,4),iterable)

print(isinstance(tuple(),iterable))

print(isinstance((1,2,3,4),iterable))

(4)判斷 集合 型別是不是可迭代物件

isinstance(set(),iterable)

isinstance((1,2,3,4),iterable)

print(isinstance(set(),iterable)) # true

print(isinstance((1,2,3,4),iterable)) # true

(5)判斷 字典 型別是不是可迭代物件

isinstance({},iterable)

isinstance(,iterable)

print(isinstance({},iterable)) # true

print(isinstance(,iterable)) # true

(6)判斷 for 迴圈是不是可迭代物件

isinstance((x for x in range(10)), iterable)

print(isinstance((x for x in range(10)), iterator)) # true

二. 迭代器

1.概念

迭代器是在python2.2中被加入的,它為類序列物件提供了乙個類序列的介面。有了迭代器可以迭代乙個不是序列的物件,因為他表現出了序列的行為。當在python中使用for迴圈迭代乙個物件時,呼叫者幾乎分辨不出他迭代的是乙個迭代器物件還是乙個序列物件,因為python讓他(迭代器)像乙個序列那樣操作。

2.判斷乙個物件是否是迭代器(iterator). 可以使用isinstance,需要匯入模組from collections import iterator

3.判斷 for 迴圈是不是迭代器

isinstance((x for x in range(10)), iterator)

print(isinstance((x for x in range(10)), iterator)) # true

成器都是iterator物件,但list、dict、str雖然是iterable,卻不是iterator。

把list、dict、str等iterable變成iterator可以使用iter()函式:

>>> isinstance(iter(), iterator)

true

>>> isinstance(iter('abc'), iterator)

true

你可能會問,為什麼list、dict、str等資料型別不是iterator?

這是因為python的iterator物件表示的是乙個資料流,iterator物件可以被next()函式呼叫並不斷返回下乙個資料,直到沒有資料時丟擲stopiteration錯誤。可以把這個資料流看做是乙個有序序列,但我們卻不能提前知道序列的長度,只能不斷通過next()函式實現按需計算下乙個資料,所以iterator的計算是惰性的,只有在需要返回下乙個資料時它才會計算。

iterator甚至可以表示乙個無限大的資料流,例如全體自然數。而使用list是永遠不可能儲存全體自然數的

python迭代 可迭代物件與迭代器物件

問題舉例 某軟體要求,從網路抓取各個城市的氣溫資訊,並依次顯示 北京 15 22 上海 18 23 如果一次抓取所有城市氣溫資訊再顯示,顯示第乙個城市的氣溫時會由很長的延時,並且浪費儲存空間,我們期望以 用時訪問 的策略,並且把所有城市的氣溫資訊封裝 到乙個物件裡,可用for語句進行迭代。來個栗子 ...

python中迭代器的基本方法 Python迭代器

迭代器是可以迭代的物件。在本教程中,您將了解迭代器的工作原理,以及如何使用 iter 和 next 方法構建自己的迭代器。迭代器在python中無處不在。它們優雅地實現在迴圈,推導,生成器等中,但隱藏在明顯的視覺中。python中的迭代器只是乙個可以迭代的物件。乙個將一次返回資料的物件或乙個元素。從...

python迭代物件和迭代器

一.迭代物件 1.概念 迭代物件 可以直接作用於for迴圈的物件統稱為可迭代物件 iterable。2.可以直接作用於for迴圈的資料型別 1 集合類資料型別,如list,tuple,dict,set,str等 2 generator,包括生成器和帶yield的generator function....