自定義生成器函數模擬Python內置函數filter()
- 2019 年 12 月 13 日
- 筆記
作為Python函數式編程的三大巨頭之一,內置函數filter()的地位是非常重要的,其語法為:
filter(function or None, iterable) –> filter object
filter()函數使用指定函數描述的規則對序列中的元素進行過濾,返回包含符合規則的元素的filter對象。
在語法上,filter()函數將一個函數作用到一個序列上的每個元素上,返回該序列中使得該函數返回值等價於True的那些元素組成的filter對象,如果指定函數為None(表示不指定規則),則返回包含序列中等價於True的元素的filter對象。
和生成器對象、map對象、zip對象、reversed對象一樣,filter對象具有惰性求值的特點,其中每個元素只能使用一次。

在Python中,包含yield語句的函數稱為生成器函數,生成器函數的執行結果是一個生成器對象,而不是一個具體的值。生成器對象具有惰性求值的特點,每次執行到yield語句時,返回一個值,暫停執行,直到下次再顯式索要時再恢復執行。
對於生成器對象,可以使用list()、tuple()將其轉換為列表或元組,也可以使用for循環遍歷其中的元素,或者使用內置函數next()顯式索取下一個元素。
