迭代器與可迭代物件的區別,以及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(迭代器與可迭代)
- 生成器與迭代器的區別
- 可迭代物件 vs 迭代器 vs 生成器物件
- Python生成器、迭代器、可迭代物件Python物件
- Python之可迭代物件、迭代器、生成器Python物件
- 搞清楚 Python 的迭代器、可迭代物件、生成器Python物件
- 重要內建函式、常見內建函式(瞭解)、可迭代物件、迭代器物件、for迴圈原理、異常捕獲函式物件
- 關於python中可迭代物件和迭代器的一些理解Python物件
- 第一類物件(函式),閉包及迭代器物件函式
- ES6中的迭代器、Generator函式以及Generator函式的非同步操作函式非同步
- IL角度理解for 與foreach的區別——迭代器模式模式
- python可迭代物件Python物件
- 關於我對可迭代物件,迭代器,生成器的一些理解物件
- 生成器函式,迭代器函式
- 迭代和增量的區別?
- Python 函式進階-迭代器Python函式
- Python入門之迭代器與生成器的區別Python
- Python進階:迭代器與迭代器切片Python
- 《python-美藏篇》1.可迭代、迭代器與生成器Python
- Java:設計與使用迭代器薦Java
- PHP 物件迭代PHP物件
- 協程與迭代器
- Python函式:一個簡單的迭代Python函式
- 例項物件和函式物件的區別物件函式
- 不用for迭代 --手工訪問迭代器中的元素.
- 聯合迭代器與生成器,enumerate() 內建函式真香!函式
- Python的生成器和迭代器有什麼區別?Python
- 迭代器
- [OI] 指標與迭代器指標
- ES6系列--7. 可迭代協議和迭代器協議協議
- 迭代器,迭代器塊和資料管道
- # Swift 集合型別之迭代器Swift型別