欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

python 生成器遍歷

呂致盈2年前8瀏覽0評論

Python中生成器(generator)是一種特殊的迭代器(iterator)。相比于普通的迭代器,生成器可以在每次遍歷時(shí)生成一個(gè)新的值,而不是事先把所有的值準(zhǔn)備好。這種優(yōu)化使得生成器被廣泛地應(yīng)用于需要大量數(shù)據(jù)生成或者遍歷時(shí)間較長的場合。

# 生成器的定義方式
def my_generator():
i = 0
while i< 5:
yield i    # 使用yield關(guān)鍵字可以將函數(shù)變成生成器
i += 1
# 生成器的使用方式
gen = my_generator()    # 調(diào)用生成器函數(shù)返回生成器對象
for item in gen:        # 使用for循環(huán)遍歷生成器對象
print(item)

生成器的遍歷方式與普通的迭代器相同,都可以使用for循環(huán)進(jìn)行遍歷,也可以使用next()方法手動(dòng)遍歷。但由于生成器的特殊性質(zhì),使用生成器進(jìn)行遍歷時(shí)可以節(jié)省內(nèi)存空間,避免因?yàn)閿?shù)據(jù)量過大導(dǎo)致程序崩潰。

# 手動(dòng)遍歷生成器
gen = my_generator()
print(next(gen))
print(next(gen))
print(next(gen))
print(next(gen))
print(next(gen))

使用生成器的另一個(gè)優(yōu)勢是可以與其它功能進(jìn)行結(jié)合,例如filter()、map()等函數(shù)可以應(yīng)用于生成器對象上,進(jìn)一步實(shí)現(xiàn)代碼的簡化和效率的提升。

# filter()函數(shù)與生成器對象
def my_generator():
i = 0
while i< 5:
yield i
i += 1
gen = my_generator()
res = list(filter(lambda x: x % 2 == 0, gen))    # 使用filter函數(shù)過濾生成器的結(jié)果
print(res)    # 輸出結(jié)果 [0, 2, 4]
# map()函數(shù)與生成器對象
def my_generator():
i = 1
while i<= 5:
yield i
i += 1
gen = my_generator()
res = [x*2 for x in map(lambda x: x+1, gen)]    # 使用map函數(shù)計(jì)算生成器的結(jié)果
print(res)    # 輸出結(jié)果 [4, 6, 8, 10, 12]

總之,生成器作為一種特殊的迭代器,在Python編程中有著廣泛的應(yīng)用場景。在編程實(shí)踐中,使用生成器進(jìn)行遍歷和處理無疑可以讓代碼更為簡潔高效,提高程序運(yùn)行效率。