函数式编程-高阶函数map()及reduce(),fillter(),sorted()
2018-02-22 14:59
337 查看
一、map(),函数f有一个参数
map()函数接收两个参数,一个是函数,一个是序列,
map将传入的函数依次作用到序列的每个元素,并把结果作为新的list返回。
>>> def f(x): ... return x * x ... >>> map(f, [1, 2, 3, 4, 5, 6, 7, 8, 9]) [1, 4, 9, 16, 25, 36, 49, 64, 81]二、reduce() 函数f必须有两个参数
reduce把一个函数作用在一个序列[x1, x2, x3...]上,这个函数必须接收两个参数,reduce把结果继续和序列的下一个元素做累积计算,其效果就是
> def fn(x, y): ... return x * 10 + y ... >>> reduce(fn, [1, 3, 5, 7, 9]) 13579str转为num
练习1、利用
map()函数,把用户输入的不规范的英文名字,变为首字母大写,其他小写的规范名字。输入:
['adam', 'LISA', 'barT'],输出:
['Adam', 'Lisa', 'Bart']]def cg_str(lst):
return list(map(lambda x:x[0].upper()+x[1:].lower(),lst))
print(cg_str(['adam','LISA','barT'])) ['Adam', 'Lisa', 'Bart']练习2、Python提供的
sum()函数可以接受一个list并求和,请编写一个
prod()函数,可以接受一个list并利用
reduce()求积。
def prod(lst): return reduce(lambda x,y:x*y,lst)
print(prod([1,2,3,4,5])) 123三、fillter() 函数f一个参数和
map()类似,
filter()也接收一个函数和一个序列。和
map()不同的时,
filter()把传入的函数依次作用于每个元素,然后根据返回值是
True还是
False决定保留还是丢弃该元素。
def not_empty(s): return s and s.strip() filter(not_empty, ['A', '', 'B', None, 'C', ' ']) # 结果: ['A', 'B', 'C']四、sorted() 作为高阶函数时,f参数2个通常规定,对于两个元素
x和
y,如果认为
x < y,则返回
-1,如果认为
x == y,则返回
0,如果认为
x > y,则返回
1,这样,排序算法就不用关心具体的比较过程,而是根据比较结果直接排序。
Python内置的
sorted()函数就可以对list进行排序:
>>> sorted([36, 5, 12, 9, 21]) [5, 9, 12, 21, 36]此外,
sorted()函数也是一个高阶函数,它还可以接收一个比较函数来实现自定义的排序。比如,如果要倒序排序,我们就可以自定义一个
reversed_cmp函数:
def reversed_cmp(x, y): if x > y: return -1 if x < y: return 1 return 0传入自定义的比较函数
reversed_cmp,就可以实现倒序排序:
>>> sorted([36, 5, 12, 9, 21], reversed_cmp) [36, 21, 12, 9, 5]
相关文章推荐
- Python进阶:函数式编程(高阶函数,map,reduce,filter,sorted,返回函数,匿名函数,偏函数)...啊啊啊
- python学习(9)高阶函数map、reduce、filter、sorted
- python——高阶函数——map reduce filter sorted
- python--函数式编程 (高阶函数(map , reduce ,filter,sorted),匿名函数(lambda))
- Python学习2--高阶函数map、reduce、filter、sorted
- Python3中的高阶函数(map,reduce,filter,sorted)
- Python 函数式编程--高阶函数Map、Reduce、Filter、Sorted
- Python函数式编程(高阶函数、map()、reduce()、filter()、sorted()、lambda、decorator装饰器)
- Python 函数式编程(高阶函数、把函数作为参数、map()函数、reduce()函数、filter()函数、自定义排序函数、函数返回函数、闭包、匿名函数、装饰器decorator)
- python 高阶函数 map reduce filter sorted 闭包 装饰器
- map reduce filter sorted (高阶函数)
- Java 高阶函数的简单使用:map,reduce,filter,sorted
- Python教程学习简记8--Python 高阶函数 map/reduce filter sorted
- Python函数式编程(高阶函数 <map/reduce filter sorted> 返回函数 匿名函数 装饰器 偏函数)
- [py][lc]python高阶函数(匿名/map/reduce/sorted)
- 高阶函数:map、reduce、filter、sorted
- Python高阶函数——map/reduce/filter/sorted
- 高阶函数 map filter sorted
- python中的高阶函数map(),reduce(),filter()的区别
- [ Python - 9 ] 高阶函数map和reduce连用实例