1. 程式人生 > >表示式、生成式與匿名函式

表示式、生成式與匿名函式

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()等高階函式會在內建函式一篇中作說明。