本文目錄一覽:
Python中列表生成式和生成器的區別
列表生成式語法:
[x*x for x in range(0,10)] //列表生成式,這裡是中括號
//結果 [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
(x*x for x in range(0,10)) //生成器, 這裡是小括號
//結果 generator object genexpr at 0x7f0b072e6140
二者的區別很明顯:
一個直接返回了表達式的結果列表, 而另一個是一個對象,該對象包含了對表達式結果的計算引用, 通過循環可以直接輸出
g = (x*x for x in range(0,10))
for n in g:
print n
結果
1
4
9
16
25
36
49
64
81
當表達式的結果數量較少的時候, 使用列表生成式還好, 一旦數量級過大, 那麼列表生成式就會佔用很大的內存,
而生成器並不是立即把結果寫入內存, 而是保存的一種計算方式, 通過不斷的獲取, 可以獲取到相應的位置的值,所以佔用的內存僅僅是對計算對象的保存
python列表推導式和生成器表達式-
列表推導式和生成器表達式以及字典推導式 通常被視為Python中函數式編程的一部分,列表推導允許您使用包含較少代碼的for循環創建列表。
用[] 包圍
用{} 包圍
生成器表達式允許在沒有yield關鍵字的情況下即時創建生成器。
語法和概念類似於列表推導的語法和概念:用()包圍
python極簡教程06:生成式和裝飾器
測試奇譚,BUG不見。
這一場,主講python的 生成式和裝飾器。
目的:掌握四種生成式(列表、生成器、集合、字典),裝飾器的原理和使用。
能夠用一行代碼,快速高效的生成數據。(這就不需要再通俗的講解了吧)
舉個例子:提取1-100之間的奇數
使用(),而不是 []
舉個例子:列表元素去重
舉個例子:字典kv反轉
顧名思義:增強函數或類的功能的一個函數。
裝飾器的作用:增強函數的功能,確切的說,可以裝飾函數,也可以裝飾類。
初學的你,還是太難理解?
你開視頻聊天,覺得自己的顏值不在線,於是乎,你使用美顏,增強裝飾自己的顏值。
對於美顏這個功能來說,你可以用,我可以用,所有人都可以用,以此來增強裝飾自己的顏值。
方法一:不用語法糖@符號
方法二:採用語法糖@符號
再舉個例子:計算函數時間
python解析式與生成器表達式
列表解析式List Comprehension,也叫列表推導式
語法
列表解析式是一種語法糖
語法
語法
語法
和列表解析式的區別
生成器對象
一般來說,應該多應用解析式,簡短、高效。如果一個解析式非常複雜,難以讀懂,要考慮拆解成for循環。
生成器和迭代器是不同的對象,但都是可迭代對象。
如果不需要立即獲得所有可迭代對象的元素,在Python 3中,推薦使用惰性求值的迭代器。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/206710.html