生成器是python中提供的一種固定語法,按照語法規則呼叫方法,就會獲取乙個條件表示式推導得到的資料,是推導式的延伸。
用win + r ,開啟命令提示符,輸入python。
如果專案中需要大量的資料(儲存列表、儲存生成器),有什麼區別?
列表:10億個整數,怎麼在列表中儲存?
生成器:只是乙個物件,生成10億個資料~每次只有乙個資料。
如果專案中需要大量的資料,使用列表會極度消耗記憶體,此時使用生成器替代列表是乙個非常不錯的選擇。
列表生成器,是在推導式的基礎上,衍生的出來的一種記憶體優化的語法。
列表生成器語法:
變數 = (臨時變數 (for…if…) (for…if…)…)python語法中,提供了乙個特殊的關鍵字,yield,類似return語句。
主要的作用:將乙個函式轉換成生成器物件。
yield關鍵字案例:
"""
函式實現的生成器
"""def
test()
:print
("hello"
)yield
"hello1"
print
("world"
)yield
"world1"
print
("rjx"
)yield
t = test(
)# 不是執行函式,而是獲取乙個生成器物件
print
(type
(t))
# 生成器物件
# ① 獲取下乙個資料
print
(next
(t))
print
(next
(t))
print
(next
(t))
"""
生成器案例:**流量,計數器
"""# ① 列表生成器
online_counter =
(x for x in
range
(100000000000))
# 可以直接定義計數器的資料,但是資料具體的[到底需要多大?]
print
(next
(online_counter)
)# 內建函式
print
(online_counter.__next__())
# 魔法方法獲取
# ② 函式生成器
defonline_counter()
:"""無線次數計數器"""
index =
0while
true
:yield index
index +=
1oc = online_counter(
)# 獲取生成器物件--> 計數功能
print
(oc.__next__())
print
(next
(oc)
)
(地圖距離運算)
"""
地圖距離運算
"""def
distance()
:"""地圖距離運算生成器"""
sum=
0# 總長度
while
true
: dis =
yield
sumsum
+= dis
# 獲取生成器
dt = distance(
)# 呼叫一次生成器
print
(next
(dt)
)# 距離開始運算
print
(dt.send(1)
)print
(dt.send(2)
)print
(dt.send(3)
)print
(dt.send(6)
)
python3之生成器
斐波那契 fibonacci 數列列是乙個非常簡單的遞迴數列,除第乙個和第二個數外,任意乙個數都可由前兩個數相加 得到。用電腦程式輸出斐波那契數列的前 n 個數是乙個非常簡單的問題,許多初學者都可以輕易寫出如下函式 def fab max n,a,b 0,0,1 while n max print ...
python3生成器 Python3 生成器
python3 生成器 閱讀 125 發布於 2020 05 19 14 29 25 在python中,一邊迴圈一邊計算出元素的機制,稱為生成器 generator。生成器的優點 一次返回乙個結果,延遲計算。這對於大資料量處理,是個非常有用的優勢。占用記憶體量是工程師必須考慮的乙個問題。提高 可讀性...
十 python3 生成器
生成器 generator 在 python 中,不必建立完整的 list,從而節省大量的空間。一邊迴圈一邊計算的機制。建立乙個 generator,有很多種方法。第一種方法很簡單,只要把乙個列表生成式的 改成 就建立了乙個 generator l x x for x in range 10 l 0...