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