1、列表生成式
如果要生成[1x1, 2x2, 3x3, ..., 10x10]
怎麼做?方法一是循環:
列表生成式則可以用一行語句代替循環生成上面的list:[x * x for x in range(1, 11)]
2、生成器
通過列表生成式,我們可以直接創建一個列表。但是,受到內存限制,列表容量肯定是有限的。如果需要創建一個很大容量的列表卻只需要訪問開始的幾個,那麼就會造成空間的浪費。如果列表元素可以按照某種算法推算出來,那我們是否可以在循環的過程中不斷推算出後續的元素呢?這樣就不必創建完整的list,從而節省大量的空間。在Python中,這種一邊循環一邊計算的機制,稱爲生成器:generator。
第一種方法很簡單,只要把一個列表生成式的[]
改成()
,就創建了一個generator:
創建L
和g
的區別僅在於最外層的[]
和()
,L
是一個list,而g
是一個generator。怎麼打印出generator的每一個元素呢?需要通過next()
函數獲得generator的下一個返回值,不斷的訪問nest()函數,直到計算到最後一個元素,沒有更多的元素時,拋出StopIteration
的錯誤。所以正確的方法是使用for
循環,因爲generator也是可迭代對象,並且不需要關心StopIteration
的錯誤。
3、內置函數
判斷裏面:非零即真,非空即真
4、匿名函數
關鍵字lambda
表示匿名函數,冒號前面的x
表示函數參數。
匿名函數有個限制,就是隻能有一個表達式,不用寫return
,返回值就是該表達式的結果。
用匿名函數有個好處,因爲函數沒有名字,不必擔心函數名衝突
匿名函數也是一個函數對象,也可以把匿名函數賦值給一個變量,再利用變量來調用該函數:
也可以把匿名函數作爲返回值返回