简单易懂之python 中的map,filter,reduce用法
map(function,sequence)
把sequence中的值当参数逐个传给function,返回一个包含函数执行结果的list。
重点是结果返回一个列表,这样对返回的列表就可以干很多的活了。如().join()操作
如果function有两个参数,即map(function,sequence1,sequence2)。
例子:
求1+1,2+2,3+3,4+4
map(lambda x:x+x,range(1,5))
返回值是[2,4,6,8]
reduce(function,sequence)
function接收的参数个数只能为2
先把sequence中第一个值和第二个值当参数传给function,再把function的返回值和第三个值当参数传给
function,然后只返回一个结果。
重点就是经过reduce处理完以后,就只会得到一个结果。
例子:
求1到10的累加
reduce(lambda x,y:x+y,range(1,11))
返回值是55。
filter(function,sequence)
function的返回值只能是True或False
把sequence中的值逐个当参数传给function,如果function(x)的返回值是True,就把x加到filter的返回值里面。一般来说filter的返回值是list,特殊情况如sequence是string或tuple,则返回值按照sequence的类型。
重点就是通过filter函数来达到过滤的效果
例子:
找出1到10之间的奇数
filter(lambda x:x%2!=0,range(1,11))
返回值
[1,3,5,7,9]
还有就是lamdba天生跟它们混的比较熟。通过lamdba来产生一个匿名的函数,对后面的sequence来干活