python中的map,reduce,filter,sorted,lambda表达式
2016-08-23 15:55
591 查看
map()是python中的高阶函数,它接收一个函数 f 和一个集合 list,它会把每个list里面的元素带到函数 f 中 进行计算并返回一个新的list,并不会改变原来list。
例如对于 list = [1,2,3,4,5,6,7,8,9] 希望把list集合里面的每个元素都算成它的平方,也就是 list = [1,2,9,16,25,36,49,64,81]
reduce()函数接收的参数和map函数类似,也是一个函数 f 和一个集合 list,,但是每次必须传入2个参数,并返回最终结果值
filter()函数也是接收一个函数 f 和一个集合 list, 它会对集合里面的每一个元素进行判断返回True和False,自动过滤掉不符合条件的元素,筛选出符合条件的元素组成新的集合
sorted()可以接收一个比较函数来实现自定义排序,比较函数的定义是,传入的两个的元素 x, y,如果 x应该排在 y
的前面,返回 -1,如果 x应该排在 y
的后面,返回 1。如果 x和 y
相等,返回 0。它可以接收一个比较函数来实现自定义排序,比较函数的定义是,传入两个待比较的元素 x, y,如果 x应该排在 y
的前面,返回 -1,如果 x应该排在 y
的后面,返回 1。如果 x和 y
相等,返回 0。
有些时候,我们感觉没有必要写个函数时,直接写个匿名函数更方面,匿名函数关键字 lambda
a = map(lambda x:x*x,[1,2,3,4,5,6])
print(a)
#输出 [1, 4, 9, 16, 25, 36]
b = lambda x:-x if x < 0 else x
print(b(-2),b(2))
#输出 (2, 2)
def is_not_empty(s):
return s and len(s.strip()) > 0
print filter(lambda s: s and len(s.strip())>0, ['test', None, '', 'str', ' ', 'END'])
#输出 ['test', 'str', 'END']
例如对于 list = [1,2,3,4,5,6,7,8,9] 希望把list集合里面的每个元素都算成它的平方,也就是 list = [1,2,9,16,25,36,49,64,81]
#我们只需要传入函数f(x)=x*x,就可以利用map()函数完成这个 def f(x): return x*x print(map(f,range(1,10))) #输出结果 [1, 4, 9, 16, 25, 36, 49, 64, 81] #把集合中的字符串都改成 首字母大小 后边字母小写 def format_name(s): return s[0].upper()+s[1:].lower() #因为在python中字符串和数组都是序列,因此可以通过索引取对应的值 print map(format_name, ['kevin', 'ERIC', 'jacK']) #输出 ['Kevin', 'Eric', 'Jack']
reduce()函数接收的参数和map函数类似,也是一个函数 f 和一个集合 list,,但是每次必须传入2个参数,并返回最终结果值
#计算出下面集合每个元素所有的积 def prod(x, y): return x*y print reduce(prod, [1,2,3,4]) #计算出集合里面所有元素的乘积 #输出 24 #计算1、2、3...100的和 def total_sum(x,y): return x+y; print(reduce(total_sum,range(1,101))) #记住函数是不加括号的,只写函数名字就可以 #输出 5050
filter()函数也是接收一个函数 f 和一个集合 list, 它会对集合里面的每一个元素进行判断返回True和False,自动过滤掉不符合条件的元素,筛选出符合条件的元素组成新的集合
#判断 集合里面的元素是不是空字符串 def is_empty(s): return s and len(s.strip())>0 print(filter(is_empty,['Eric ',' ',' Jack'])) #输出 ['Eric ', ' Jack'] #判断一个数开方 是否是整数 def is_sqr(x): r=int(math.sqrt(x)) return r*r==x print filter(is_sqr,range(1,101)) #输出 [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
sorted()可以接收一个比较函数来实现自定义排序,比较函数的定义是,传入的两个的元素 x, y,如果 x应该排在 y
的前面,返回 -1,如果 x应该排在 y
的后面,返回 1。如果 x和 y
相等,返回 0。它可以接收一个比较函数来实现自定义排序,比较函数的定义是,传入两个待比较的元素 x, y,如果 x应该排在 y
的前面,返回 -1,如果 x应该排在 y
的后面,返回 1。如果 x和 y
相等,返回 0。
#sorted 默认按照从小到大排序 print(sorted([2,23,3,1,223])) #倒序排序 从大到小 def reversed_cmp(x,y): if x > y: return -1 if x < y: return 1 return 0 #正序排序 从小到大 def positive_cmd(x,y): if x < y: return -1 if x > y: return 1 return 0 #从高到低排序 print(sorted([88,8,211,985,3,16],reversed_cmp)) #输出 [985, 211, 88, 16, 8, 3] #从低到高排序 print(sorted([88,8,211,985,3,16],positive_cmd)) #输出 [3, 8, 16, 88, 211, 985]
有些时候,我们感觉没有必要写个函数时,直接写个匿名函数更方面,匿名函数关键字 lambda
a = map(lambda x:x*x,[1,2,3,4,5,6])
print(a)
#输出 [1, 4, 9, 16, 25, 36]
b = lambda x:-x if x < 0 else x
print(b(-2),b(2))
#输出 (2, 2)
def is_not_empty(s):
return s and len(s.strip()) > 0
print filter(lambda s: s and len(s.strip())>0, ['test', None, '', 'str', ' ', 'END'])
#输出 ['test', 'str', 'END']
相关文章推荐
- python 高阶函数 map reduce filter sorted 闭包 装饰器
- 【转】python的内建函数:filter,map,reduce,lambda,sorted等
- python3 常见函数 map、reduce、filter、lambda、sorted
- python基础之map/reduce/filter/sorted
- python基础之map/reduce/filter/sorted
- Python学习2--高阶函数map、reduce、filter、sorted
- python:内建函数、range()、map()、filter()、reduce()、sorted()、集合的使用、functools中的函数使用、MD5加密
- python常用函数之lambda、reduce、map、sorted、filter
- Python 函数式编程--高阶函数Map、Reduce、Filter、Sorted
- python——高阶函数——map reduce filter sorted
- python学习笔记,map/reduce,filter,sorted
- Python学习(八)——map、reduce、filter、sorted
- python--函数式编程 (高阶函数(map , reduce ,filter,sorted),匿名函数(lambda))
- Python高阶函数——map/reduce/filter/sorted
- Python3中的高阶函数(map,reduce,filter,sorted)
- python笔记【map(),reduce(),filter(),sorted()】
- Python 几个内建函数: map, reduce,filter,sorted 整理
- 【python】详解lambda匿名函数以及结合map、reduce、filter、sorted等使用
- Python中的map(),reduce(),filter(),sorted()函数知识点总结
- Python进阶:函数式编程(高阶函数,map,reduce,filter,sorted,返回函数,匿名函数,偏函数)...啊啊啊