版本:python2.7.6
lambda filter() map() reduce()
三點:輸入,作用,輸出
1、lambda
lambda 參數:表達式 返回值為表達式的值
>>> f=lambda x,y:x*y >>> f(4,6) 24
參數匿名
>>> L=[lambda x,y:x+y+1,lambda x,y:x+y+2,lambda x,y:x+y+3] >>> for f in L: ... print f(1,2) ... 4 5 6 >>> L[0](2,3) 6 >>> L[0] <function <lambda> at 0xb74e879c>
列表L 中的每個元素都是一個有兩個參數的匿名函數。
2、map()
輸入兩個參數:函數和可迭代對象
作用:對可迭代對象每個元素執行函數的操作
輸出:返回結果值的迭代對象
返回迭代器(每次取一個結果值)(python3.4.3)
python2.7.6
>>> def F(a): ... return a**2 ... >>> map(F,[1,2,3,4]) [1, 4, 9, 16]
pthon3.4.3
>>> def F(a): ... return a**2 ... >>> map(F,[1,2,3,4]) <map object at 0xb70e2b2c> >>> q=map(F,[1,2,3,4]) >>> list(q) [1, 4, 9, 16]
3、filter()
輸入:一個函數和一個序列。
作用:過濾數列,函數作用於序列每個元素,返回True保留,False則丟棄。
輸出:輸出過濾後的數列
輸出迭代器(python3.4.3)
python2.7.6
>>> filter(lambda x:x%2==1,[1,2,3,4,5,6,7]) [1, 3, 5, 7]
python3.4.3
>>> filter(lambda x:x%2==1,[1,2,3,4,5,6,7]) <filter object at 0xb6ff3bcc> >>> f=filter(lambda x:x%2==1,[1,2,3,4,5,6,7]) >>> list(f) [1, 3, 5, 7]
4、reduce()函數 (python3中移到functools包中)
輸入:函數和序列,函數必須接受兩個參數
作用:前兩個參數執行函數的運算,得到結果再與下一個參數運算。
輸出:所有參數的運算值
>>> reduce(lambda x,y:x+y,[1,2,3,4]) 10
pthon3.4.3
>>> from functools import reduce >>> reduce(lambda x,y:x+y,[1,2,3,4]) 10