[Python]中filter、map、reduce、lambda的用法

来源:互联网 发布:合肥软件外包公司 编辑:程序博客网 时间:2024/05/17 04:03

原创文章,欢迎转载。转载请注明:转载自 祥的博客

原文链接:http://blog.csdn.net/humanking7/article/details/45950985


Python中内置了一些非常方便的函数,可以节约我们的开发时间和提高程序的效率。

filter、map、reduce的用法

filter用法

filter(function, sequence):对sequence中的item依次执行 function(item),将执行结果为Trueitem组成一个ListStringTuple(取决于sequence的类型)返回

#寻找能被2整除的数>>> def fun(x): return x%2==0 >>> filter(fun,range(0,10))[0, 2, 4, 6, 8]

map用法

map(function, sequence) :对sequence中的item依次执行function(item),见执行结果组成一个List返回:

>>> def fun(x): return x**2>>> map(fun,range(1,10))[1, 4, 9, 16, 25, 36, 49, 64, 81]>>> def fun(x): return x+x>>> map(fun,'abcdefg')['aa', 'bb', 'cc', 'dd', 'ee', 'ff', 'gg']#得到的还是列表

另外map()也支持多个 sequence,这就要求function也支持相应数量的参数输入。

>>> def add(x,y): return x+y>>> map(add,range(10),range(10))[0, 2, 4, 6, 8, 10, 12, 14, 16, 18]

reduce用法

reduce(function, sequence[, initial]):对sequence中的item顺序迭代调用 function,如果有 initial,还可以作为初始值调用。

>>> def add(x,y): return x+y>>> reduce(add, range(1,4)) #返回 6 = 1+2+36>>> reduce(add, range(1,4), 10) #返回 16 = 1+2+3 (+10)16

与lambda的联合使用

lambda:这是Python支持一种有趣的语法,它允许你快速定义单行的最小函数,类似与C语言中的宏,这些叫做lambda的函数,是从LISP借用来的,可以用在任何需要函数的地方。

#定义的平方函数>>> square = lambda x: x**2>>> square(3)9>>> (lambda x: x**2)(3) #也可以这样调用,单行最小函数9

所以把filtermapreducelambda 结合起来用,函数就可以简单的写成一行。(装逼技能 Get

lambda与filter联合使用

#寻找能被2整除的数>>> filter( lambda x:x%2==0, range(0,10) )[0, 2, 4, 6, 8]

lambda与map联合使用

#分别求列表数值的平方>>> map( lambda x:x**2, range(0,10) )[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]

lambda与reduce联合使用

#1+2+3+···+100=?  高斯小时候做过的数学题>>> reduce( lambda x,y:x+y, range(1,101) )5050
0 0
原创粉丝点击