原创文章,欢迎转载。转载请注明:转载自 祥的博客
原文链接:http://blog.csdn.net/humanking7/article/details/45950985
文章目录
- @[toc]
- filter、map、reduce的用法
- filter用法
- map用法
- reduce用法
- 与lambda的联合使用
- lambda与filter联合使用
- lambda与map联合使用
- lambda与reduce联合使用
- filter用法
- map用法
- reduce用法
- lambda与filter联合使用
- lambda与map联合使用
- lambda与reduce联合使用
Python中内置了一些非常方便的函数,可以节约我们的开发时间和提高程序的效率。
filter、map、reduce的用法
filter用法
filter(function, sequence)
:对sequence
中的item
依次执行 function(item)
,将执行结果为True
的item
组成一个List
、String
、Tuple
(取决于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 3
6
>>> 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
所以把filter
、map
、 reduce
和 lambda
结合起来用,函数就可以简单的写成一行。(装逼技能 Get)
lambda与filter联合使用
代码语言:javascript复制#寻找能被2整除的数
>>> filter( lambda x:x%2==0, range(0,10) )
[0, 2, 4, 6, 8]
lambda与map联合使用
代码语言:javascript复制#分别求列表数值的平方
>>> map( lambda x:x**2, range(0,10) )
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
lambda与reduce联合使用
代码语言:javascript复制#1 2 3 ··· 100=? 高斯小时候做过的数学题
>>> reduce( lambda x,y:x y, range(1,101) )
5050