迭代器 生成器與遞迴呼叫

2022-09-16 18:48:14 字數 1140 閱讀 6326

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,...