python3之生成器操作

2021-10-04 09:24:26 字數 2276 閱讀 7949

生成器是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...