表示式、生成式與匿名函式
阿新 • • 發佈:2018-12-03
1、三元表示式
可以將簡單的if判斷函式簡化成一行語句,比如:
def max0(x, y): if x > y: return x else: return y res = max(1, 3) print(res) # 等同於 x=1;y=2 res=x if x>y else y print(res)自定義的最大值函式
2、生成式
•列表生成式
能夠快速生成列表
l = [i ** 2 for i in range(10) if i != 3] print(l)
alpha1 = ['a', 'b', 'c', 'd', 'e'] res = [i.upper() for i in alpha1] print(res)
•字典生成式
res={i:i**2 for i in range(11) if i %2==0} print(res)
3、匿名函式與高階函式
有時候,程式中不便於顯式的定義函式,這時可以使用匿名函式,匿名函式長和高階函式聯絡起來使用,比如map()、reduce()等,
現在需要臨時的使用一個計算x^2的功能,可以傳入匿名函式:
l = [1, 3, 5, 8, 9, 55] res= list(map(lambda x: x ** 2, l)) print(res)
# [1, 9, 25, 64, 81, 3025]
關鍵字 lambda 表示這是個匿名函式,冒號前x表示引數,冒號後是表示式。
lambda函式只能有一個表示式而且不用return,返回值就是表示式的結果,這樣的函式也是一個函式物件,可以賦給一個變數,再用變數來呼叫或返回。
func=lambda x: x ** 2
func(4)
只不過這樣做有些多此一舉了。
map() 接收兩個引數,一個是函式,一個是Iterable (可迭代物件) 它會將可迭代物件裡的每個值依次取出用傳入的函式加工,然後返回成新的Iterable。
關於map()等高階函式會在內建函式一篇中作說明。