迭代器與可迭代物件的區別,以及iter()函式的使用。
今天我們就來聊一聊迭代器與可迭代物件的區別,那麼什麼是迭代器,什麼又是可迭代物件呢?
迭代器(Iterator):可以被***next()函式***呼叫並不斷返回下一個值的物件稱為迭代器。
可迭代物件(Iterable):集合資料型別,如list、tuple、dict、set、str等,生成器以及帶yield的generator function,這些可以直接作用於***for迴圈***的物件稱為可迭代物件。
接下來我們來看一個小例子,驗證一下 列表,字典,字串,元組,生成器是否為迭代器物件。
執行結果如下:
在分析之前,瞭解一個小知識點:可以使用isinstance(物件,Iterator)判斷物件是否為迭代器
from collections import Iterator
isinstance((x for x in range(10)), Iterator) `
根據迭代器的定義,我們來分析一下結果:生成器不用多說,肯定能被next()函式呼叫;而列表、元組、字典、字串是可迭代物件,為什麼不是迭代器呢?關鍵一點他們不能被next()函式呼叫。
要知道,可迭代物件是與for迴圈掛鉤的,而迭代器是與next()函式掛鉤的。是可迭代物件不一定是迭代器,但,是迭代器一定是可迭代物件,就比如說生成器。
要想將列表,字典,元組,字串轉換為迭代器,使用next()進行訪問。 可以使用 iter()函式。
接著上面的例子來說:
我們把列表g變成迭代器,使用next()函式訪問它,結果如下:
由此可見,iter()函式把列表g變成了一個迭代器,剩下的幾個同學們可以自行檢驗。
相關文章
- Python中可迭代物件、迭代器以及iter()函式的兩個用法詳解Python物件函式
- Python可迭代的物件與迭代器Python物件
- 跟你深入剖析可迭代物件和迭代器的區別與聯絡物件
- 你知道JavaScript中的可迭代物件與迭代器嗎JavaScript物件
- JavaScript的迭代函式與迭代函式的實現JavaScript函式
- 可迭代物件、迭代器、生成器物件
- Iterator與Iterable(迭代器與可迭代)
- 生成器與迭代器的區別
- 搞清楚 Python 的迭代器、可迭代物件、生成器Python物件
- Python之可迭代物件、迭代器、生成器Python物件
- 關於python中可迭代物件和迭代器的一些理解Python物件
- 重要內建函式、常見內建函式(瞭解)、可迭代物件、迭代器物件、for迴圈原理、異常捕獲函式物件
- IL角度理解for 與foreach的區別——迭代器模式模式
- 第一類物件(函式),閉包及迭代器物件函式
- ES6中的迭代器、Generator函式以及Generator函式的非同步操作函式非同步
- 關於我對可迭代物件,迭代器,生成器的一些理解物件
- 生成器函式,迭代器函式
- Python 函式進階-迭代器Python函式
- Python入門之迭代器與生成器的區別Python
- Python進階:迭代器與迭代器切片Python
- 《python-美藏篇》1.可迭代、迭代器與生成器Python
- 例項物件和函式物件的區別物件函式
- 聯合迭代器與生成器,enumerate() 內建函式真香!函式
- Python的生成器和迭代器有什麼區別?Python
- 迭代器的 ConcurrentModificationExceptionException
- 協程與迭代器
- 不用for迭代 --手工訪問迭代器中的元素.
- Python: 列表、陣列及迭代器切片的區別及聯絡Python陣列
- 建構函式與普通函式的區別函式
- 箭頭函式與普通函式的區別函式
- python中的迭代器Python
- DNS遞迴解析和迭代解析的區別-VeCloudDNS遞迴Cloud
- 迭代器
- TypeScript 中函式的理解?與 JavaScript 函式的區別?TypeScript函式JavaScript
- 迭代器與生成器
- [OI] 指標與迭代器指標
- ES6系列--7. 可迭代協議和迭代器協議協議
- PHP的SPL擴充套件庫(二)物件陣列與陣列迭代器PHP套件物件陣列