1.迭代器:
迭代器是迴圈取值的工具。
2.迭代器的有點與作用:
1.迭代器提供一種不依賴索引的取值方式。
2.迭代器能夠節省記憶體。
3.迭代器的使用:
1.可迭代物件:但凡內建有
__iter__
方法的物件,都稱之為可迭代物件。(如
:字串、字典、元組、列表、集合、檔案)
2.迭代器物件:但凡內建有
__ister__
和__next__
方法的物件,都稱之為迭代器物件。
(包括:檔案、以及可迭代物件被__ister__方法處理後返回值)
注意:迭代器物件一定是可迭代物件,可迭代物件不一定是迭代器物件
迭代器物件使用__next__方法進行取值,每次只能取乙個值,取值結束會報錯,所以最後需要進行捕捉異常。
__ister__()方法將可迭代物件轉化成迭代器物件,從而提供一種不按索引的取值方式。
(__ister__方法實際是用來生成迭代器物件)
4.for迴圈分析:(
fou i in k
)1.首先
k得是乙個可迭代物件。第一步先將
k轉化成迭代器物件
2.多次呼叫
__next__()
方法,進行取值
3.異常處理
二、生成器
定義:帶有yield關鍵字的函式,在
python
中稱之為生成器。
作用:呼叫帶有關鍵字yield的函式時,生成器(函式體)不會立即執行**,
只是得到乙個返回值。該返回值就是乙個迭代器物件(即生成迭代器),然後呼叫迭代器的__next__方式時,每呼叫一次,函式體僅執行一次。
yield關鍵字的作用就是提供一種定義(生成)迭代器的解決方式。(和
retrun
有很大區別,
yeild
可以返回多個值,不會馬上終止程式
)三、函式的遞迴呼叫與二分法:
定義:在呼叫乙個函式的工程中又直接或間接呼叫函式本省,稱之為遞迴呼叫(達到一種迴圈的效果
)遞迴必須有乙個明確的結束條件。
3.遞迴的兩個階段:
1.回溯:一層一層遞迴下去,直到遇到遞迴結束條件。
2.遞推:往回一層一層遞推。
生成器 迭代器 遞迴
27 生成器 1 def f1 print 123 yield 1 yield 2 yield 3 ret f1 ret.next 進入函式找到yield 獲取yield 後面的資料。1231 ret.next 進入函式找到yield 獲取yield 後面的資料。2 ret.next 進入函式找到y...
迭代器與生成器
可迭代物件 可以直接作用於for迴圈的物件 統稱為可迭代物件 返回迭代器的物件 即iterable。一是集合資料型別,如list tuple dict set str等 二是generator,包括生成器和帶yield的generator function。容器 簡單來說 容器是一系列元素的集合 容...
生成器與迭代器
迭代是python最強大的功能之一,是訪問集合元素的一種方式。迭代器是乙個可以記住遍歷的位置的物件。迭代器物件從集合的第乙個元素開始訪問,直到所有的元素被訪問完結束。迭代器只能往前不會後退。迭代器有兩個基本的方法 iter 和 next 字串,列表或元組物件都可用於建立迭代器 list 1,2,3,...