python 迭代器,生成器

2021-08-30 11:42:30 字數 818 閱讀 8494

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

一類是集合資料型別,如 list 、 tuple 、 dict 、 set 、 str 等

一類是 generator ,包括生成器和帶 yield 的generator function

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

*python專門為for關鍵字做了迭代器的語法糖:在for迴圈中,python將自動呼叫內建函式iter()獲得迭代器,自動呼叫next()獲取元素,還完成了檢查stopiteration異常的工作

??isinstance(),判斷該例項是否為這個類的物件:

in [50]: from collections import iterable

in [51]: isinstance(, iterable)

out[51]: true

in [52]: isinstance({}, iterable)

out[52]: true

in [53]: isinstance('abc', iterable)

out[53]: true

in [54]: isinstance((x for x in range(10)), iterable)

out[54]: true

in [55]: isinstance(100, iterable)

out[55]: false

而生成器不但可以作用於 for 迴圈,還可以被 next() 函式不斷呼叫並返回下乙個值,直到最後丟擲 stopiteration 錯誤表示無法繼續返回下乙個值了

Python 迭代器 生成器

可以直接作用於for迴圈的物件,統稱為可迭代物件 iterable。iterator物件表示的是乙個資料流,iterator物件可以被next 函式呼叫並不斷返回下乙個資料,直到沒有資料時丟擲stopiteration錯誤。可以把這個資料流看做是乙個有序序列,但我們卻不能提前知道序列的長度,只能不斷...

python 迭代器,生成器

什麼事迭代 可直接用作與for迴圈的物件統稱為可迭代物件 可以被next 函式呼叫,並不斷返回下乙個值的物件稱為迭代器,所有的iterable均可以通過內建函式iter 來轉變為iterator。對於迭代器來講,有乙個next 就夠了。在你使用for和in語句時,程式就會自動呼叫即將被處理的物件的可...

python 迭代器 生成器

知識背景 1 呼叫乙個普通的python函式時,一般是從函式的第一行 開始執行,結束於return語句 異常或者函式結束 可以看作隱式的返回none 2 一旦函式將控制權交還給呼叫者,就意味著全部結束。函式中做的所有工作以及儲存在區域性變數中的資料都將丟失 3 再次呼叫這個函式時,一切都將從頭建立。...