python基礎學習迭代器和生成器

2022-08-29 07:06:08 字數 1030 閱讀 4204

可以直接作用於for迴圈的資料型別有一下幾種

一類是幾何資料型別,如 list , tuple  , dict , set ,str 等

二類是generator包括生成器和帶yield方法的函式

這些可以直接作用於for 迴圈的物件統稱為可迭代物件 iterable

我們可以使用法法.isinstance判斷乙個物件是否是iterable物件

生成器不但可以作用於for迴圈,還可以使用next()方法不斷的呼叫並返回下乙個值,直到最後丟擲stopiteration異常,表示無法繼續返回下乙個值

可以被next()方法呼叫並不斷返回下乙個值的物件統稱為迭代器,iterator

把list,dict,str等可迭代物件變為迭代器可以使用iter()函式

生成器:

生成器的特點

生成器是乙個函式,而且函式的引數都會保留。

迭代到下一次的呼叫時,所使用的引數都是第一次所保留下的,即是說,在整個所有函式呼叫的引數都是第一次所呼叫時保留的,而不是新建立的

yield 生成器的執行機制:

當你問生成器要乙個數時,生成器會執行,直至出現 yield 語句,生成器把 

yield 的引數給你,之後生成器就不會往下繼續執行。 當你問他要下乙個數時,他會從上次的狀態。開始執行,直至出現yield語句,把引數給你,之後停下。如此反覆

下面是使用yield 實現協程:

1

defpanduan():

2while

true:

3 cmd1 = (yield)4

print

(cmd1)56

defmain():

7 cc =panduan()

8 cc.__next__()9

while 1:

10 cmd = input("

>>")

11cc.send(cmd)

12 main()

Python學習筆記 迭代器和迭代器協議

術語概念解釋 關於 for 迴圈 寫乙個迭代器 1 迭代器協議 迭代器協議是一種約定,即物件必須提供乙個 next 方法,執行該方法要麼返回迭代中的下一項,要麼丟擲乙個 stopiteration 異常,終止迭代。2 迭代器 iterator 迭代器是一種物件,一種可以被 next 函式呼叫並不斷返...

Python基礎 迭代器

二 生成器 三 推導表示式 迭代器就是乙個容器,將可迭代物件通過iter包起來 li 1 2,3 4,5 a liter li 迭代器print next a 1print next a 2print next a 3 乙個個取值 1.訪問者不需要去關心內部結構,只需要通過next不斷去取下乙個內容...

Python基礎 迭代器

可以直接作用於for迴圈的資料型別有一下幾種 一類是集合資料型別 如list tuple dict set str等 一類是generator,包括生成器和帶yield的generator function 這些可以直接作用與for迴圈的物件統稱為可迭代物件 iterable 可以使用isinsta...