1 概念
1. 容器
數據結構:多個元素組織在一塊兒,而且提供了訪問元素的方法
2. 可迭代對象 // 序列-->可迭代對象
實現了__iter__的對象,能夠用在迭代工具中遍歷
2. 迭代器 // 1. 訪問集合元素的一種方式 2. 能夠記住遍歷狀態
實現了__iter__和__next__的對象;能夠顯示調用next()返回下一項
3. 迭代協議
對象提供一個next()方法,要麼返回下一項,要麼StopIteration異常
4. 生成器 // 1. 自動實現了迭代器協議,能夠直接調用next() 2. 有狀態 3. 延遲計算
生成器是特殊的迭代器
*生成器函數* // 返回迭代器的函數
yield關鍵字返回值,每次返回一個結果,掛起函數中間狀態,以便下次從他離開的地方繼續執行
*生成器表達式*
() // 生成器表達式比列表解析更加節省內存
2 可迭代對象種類
字符串、列表、元祖、字典、集合、文件等,通常狀況下都不是可迭代對象;能夠有2種方式變爲可迭代對象:
1> iter(上述對象) // 手動調用iter()將對象變爲可迭代對象
2> 迭代工具 // 好比for循環
**for循環本質**
for循環本質:for循環做爲迭代工具,內部會先調用__iter__()方法,而後調用__next__()方法一個個返回元素
3 迭代工具
*提供了一個通用的訪問可迭代對象元素的方式*
1 for循環 2 列表解析 3 字典解析 4 內置函數 // map、zip、filter、sum、enumerate、in成員