Python函數式編程

jopen 12年前發布 | 17K 次閱讀 Python Python開發

1, lambda

lambda可以創建匿名函數,一個完整的lambda表達式格式如下:

lambda [arg1[, arg2, ... argN]]: 返回值

lambda表達式返回一個可調用的函數對象。

>>> func = lambda x:x*2
>>> func
<function <lambda> at 0x01E2E130>
>>> func(3)
6

有默認參數的lambda表達式:

>>> func = lambda a,b = 2: a + b
>>> func(1)
3
>>> func(1,3)
4

變長參數的lambda表達式:

>>> func = lambda *a: [it * 2 for it in a]
>>> func(1,3)
[2, 6]

2.filter

filter用法如下:

filter(func, seq)

bool 函數func作用于seq序列中的每一個元素,返回一個使func為True的的序列

>>> func = lambda a: a%2
>>> filter(None,(1,2,3,4))
(1, 2, 3, 4)
>>> filter(func,(1,2,3,4))
(1, 3)

3.map

map的用法如下:

map(func, seq1[,seq2...])

map將函數func作用于seq序列的每個元素上,返回一個func函數返回值的列表。

>>> func = lambda a: a*2
>>> map(func, (1,2, 3))
[2, 4, 6]
>>> map(None, (1,2, 3))
[1, 2, 3]

map參數有多個序列時,依次取出各個序列的第i個元素,組成元組,func作用于該元組,返回func返回值的列表。

>>> map(lambda a, b: a+b, (1,2,3), (1,1,1))
[2, 3, 4]

4.reduce

reduce的用法如下:

reduce(func, seq)

reduce將二元函數func作用于seq序列,首先func作用于的序列的前兩個元素,得到func的返回值和第三個元素再被func作用,直到完成整個序列。

>>> reduce(lambda a, b: a+b, (1,2,3))
6

 

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!