Python中的生成器,迭代器和過濾器

2021-09-25 06:18:43 字數 847 閱讀 2576

帶有yield的函式被稱為生成器

說白了,yield就是把乙個函式變成乙個generator,其返回值將是乙個iterable,其實可以理解為生成器就是乙個迭代器

在呼叫函式時,每次遇到乙個yield會暫停並儲存當前所有的執行資訊,返回yield值,生成乙個序列

def yd():

for i in range(5):

yield i

l = yd()

print(l)

print(next(l))

print(next(l))

print(next(l))

print(next(l))01

23

首先使用內建的工廠函式iter(iterable)來獲取迭代器物件

然後可以用next()方法獲取下乙個迭代物件

a = [x  for x in range(5)]

b = iter(a)

print(b)

for i in range(len(a)):

print(next(b))01

234

所謂過濾器,說白了就是乙個篩選函式。

filter(function,iterable),其第乙個引數為乙個函式,可以使用匿名函式,第二個引數為乙個可迭代物件

下面以篩選偶數為例:

def asd(x):

return x % 2 == 0

l = filter(asd,[1,2,3,4,5])

print(l)

print(list(l))

[2, 4]

python中迭代器和生成器

迭代器 迭代器的實質是實現了next 方法的物件,常見的元組 列表 字典都是迭代器。迭代器中重點關注兩種方法 iter 方法 返回迭代器自身。可以通過python內建函式iter 呼叫。next 方法 當next方法被呼叫的時候,迭代器會返回它的下乙個值,如果next方法被呼叫,但迭代器沒有只可以返...

python中迭代器和生成器

1 迭代器 iterator 是乙個實現了迭代器協議的物件,python的一些內建資料型別 列表,陣列,字串,字典等 都可以通過for語句進行迭代,我們也可以自己建立乙個容器,實現了迭代器協議,可以通過for,next方法進行迭代,在迭代的末尾,會引發stopiteration異常。迭代器有兩個基本...

python中迭代器和生成器

這裡的迭代可以指for迴圈,在python中,對於像list,dict和檔案等而言,都可以使用for迴圈,但是它們並不是迭代器,它們屬於可迭代物件。1.1什麼可迭代物件 最簡單的解釋 可以使用for.in.語句進行迴圈的物件,就是可迭代物件 iterable 可以使用isinstance 方法進行判...