一,生成器就是可迭代物件,可以理解為一種資料型別,這種資料型別自動實現了迭代器協議。
1.生成器函式:常規函式定義,但是使用yield語句而不是return語句,yield可以返回多個值。可以保留函式的執行狀態。
2.第二行的式子稱為 三元表示式(沒有四元表示式,可以兩元)
name=『alex』
res=『hk』 if name==『song』 else 『pl』
print(res)
3.列表解析
l=[『雞蛋%s』 %i for i in range(5)]
print(l)
等價於:
egg_list=
for i in range(5):
print(egg_list)
可以改為三元表示式:
l=[『雞蛋%s』 %i for i in range(5) if i>3] #列表解析
print(l)
生成器的第二種表達方式:
a=(『雞蛋%s』 %i for i in range(5)) #生成器表示式
print(a)
print(l.next())
print(l.next())
生成器表示式更節省記憶體
import time
def test():
res=test()
print(res)
print(res.next())
print(res.next())
print(res.next())
每i執行一次next,將會輸出一次yield結果,再執行第二次next時,會在上次執行到的位置繼續往下執行,即可以保留函式的執行狀態。
三元運算,生成器表示式,列表解析
生成器是可迭代物件,可以理解成為一種資料型別,這種資料型別自動實現了迭代器協議 其他的資料型別需要呼叫自己內建的 iter 方法 在python中有兩種表現形式,一種是以函式的形式yield 二是生成器表示式 yield 函式 def test yield 1g test print g 輸出乙個生...
生成器表示式 三元表示式 列表解析
迭代器 s dog cat res s.iter print res.next print res.next 迭代器就是 iter laomuji 雞蛋 s i for i in range 10 生成器表示式不需要再呼叫iter res 雞蛋 s i for i in range 10 列表解析把...
生成器 三元運算 列表解析
一 什麼是生成器 可以理解為是一種資料型別,這種資料型別自動實現了迭代器協議 其他資料型別需要呼叫自身內建的 iter 方法 所以生成器是可迭代物件。二 生成器分類及在python中的表現形式 1 生成器函式 常規函式定義,但是,使用yield語句而不是return語句返回結果。yield語句一次返...