可以直接作用於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 實現協程:
1defpanduan():
2while
true:
3 cmd1 = (yield)4
(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...