python Lambda, filter, reduce and map
python Lambda, filter, reduce and map
1. lambda
The lambda operator or lambda function is a way to create small anonymous functions , i.e. functions without a name.
可以方便的创造一个函数。比如
1 2 3 | def add(x,y): return x + y |
用lambda 写就是
1 | lambda x,y:x + y |
非常简洁。这条语句会返回一个函数指针,你可以他赋值,或者配合map ,reduce 等操作。
比如说想把list [1,2,3,4,5]的每个值的乘2,返回一个list .
2. map
lambda配合map用是最方便的了。
r = map(func, seq)
map接收一个func 指针,然后把函数作用到seq的每个成员上。
接上面的例子就是 :
1 | map ( lambda x:x * 2 ,[ 1 , 2 , 3 , 4 , 5 ]) >>>[ 2 , 4 , 6 , 8 , 10 ] |
3. Filtering
和map 类似 ,只不过他是过滤list,也接受一个func的lambda 表达式,然后如果表达式为真就过滤掉。
filter(function, list)
1 2 3 | fib = [ 0 , 1 , 1 , 2 , 3 , 5 , 8 , 13 , 21 , 34 , 55 ] filter ( lambda x: x % 2 , fib) [ 1 , 1 , 3 , 5 , 13 , 21 , 55 ] |
直接过滤掉偶数的项。
比如说我只要>20的数据
1 | filter ( lambda a : a> 20 ,fib) |
分分钟过滤!
4.Reducing
The function reduce(func, seq) continually applies the function func() to the sequence seq. It returns a single value.
If seq = [ s1, s2, s3, ... , sn ], calling reduce(func, seq) works like this:
[ func(s1, s2), s3, ... , sn ]
[ func(func(s1, s2),s3), ... , sn ]
持续对list 进行func的操作,最终结果是产生一个数值!
1 2 | reduce ( lambda x,y: x + y, [ 47 , 11 , 42 , 13 ]) 113 |
比如说这个,依次对47,11 进行相加, 变成 [58,42,13]
然后再相加 [100,13]
113