Python中生成器generator和迭代器Iterator的使用方法
一、生成器
1. 生成器的定義
- 把所需要值得計算方法儲存起來,不會先直接生成數值,而是等到什么時候使用什么時候生成,每次生成一個,減少計算機占用內存空間
2. 生成器的創建方式
- 第一種只要把一個列表生成式的 [ ] 改成 ( )
- 第二種方法使用yield創建生成器
- 只要在一個函數中存在至少一個yield關鍵字,該函數就不是普通函數,是一個生成器
- 返回一個對象,需要使用變量接收
- 生成器可以用for進行遍歷得到所有的值
- 打印結果
3. 啟動生成器的方法
- 第一種:
- 第二種:
二、迭代器
可迭代數據類型(具有可迭代功能)
- 把可以通過for...in...這類語句迭代讀取一條數據供我們使用的對象稱之為可迭代對象(Iterable)
例如:列表,元組,字典,集合等數據類型,但他們不是可迭代對象 - generator(生成器)
- yield
- 列表生成器
- 生成器都是可迭代對象
如何判斷一個對象是不是有可迭代功能
from collections import Iterator # 列表是可迭代的 result = isinstance([1,2], Iterable) print(result) # isinstance函數會返回一個bool值 True為可迭代,反之False將具有迭代功能的數據類型轉化為可迭代器
- 可以被next()調用并不斷返回下一個值的對象稱之為迭代器Iterator
迭代器的判斷方式
from collections import Iterator # 列表是可迭代對象 # isinstance函數會返回一個bool值 True為迭代器,反之False result = isinstance([1,2], Iterator) print(result)可迭代對象的本質
-
我們分析對可迭代對象進行迭代使用的過程,發現每迭代一次(即在for...in...中每循環一次)都會返回對象中的下一條數據,一直向后讀取數據直到迭代了所有數據后結束。那么,在這個過程中就應該有一個“人”去記錄每次訪問到了第幾條數據,以便每次迭代都可以返回下一條數據。我們把這個能幫助我們進行數據迭代的“人”稱為迭代器(Iterator)。
-
可迭代對象的本質就是可以向我們提供一個這樣的中間“人”即迭代器幫助我們對其進行迭代遍歷使用。
-
可迭代對象通過__iter__方法向我們提供一個迭代器,我們在迭代一個可迭代對象的時候,實際上就是先獲取該對象提供的一個迭代器,然后通過這個迭代器來依次獲取對象中的每一個數據.
-
那么也就是說,一個具備了__iter__方法的對象,就是一個可迭代對象。
- 舉例說明迭代器本質原理
比如,數學中有個著名的斐波拉契數列(Fibonacci),數列中第一個數為0,第二個數為1,其后的每一個數都可由前兩個數相加得到: 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, ...
現在我們想要通過for...in...循環來遍歷迭代斐波那契數列中的前n個數。那么這個斐波那契數列我們就可以用迭代器來實現,每次迭代都通過數學計算來生成下一個數。
?
轉載于:https://www.cnblogs.com/yanguhung/p/10145767.html
總結
以上是生活随笔為你收集整理的Python中生成器generator和迭代器Iterator的使用方法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Python3.6全栈开发实例[005]
- 下一篇: Mac python Tesseract