Python高阶函数 ——map/reduce,filter,sorted
2019-02-04 15:41
483 查看
变量可以指向函数
f = abs >>> f(-10) 10
成功!说明变量f现在已经指向了abs函数本身。直接调用abs()函数和调用变量f()完全相同。
传入函数
def add(x, y, f): return f(x) + f(y)
map/reduce函数
map()函数接收两个参数,一个是函数,一个是
Iterable,
map将传入的函数依次作用到序列的每个元素,并把结果作为新的
Iterator返回。
>>> def f(x): ... return x * x ... >>> r = map(f, [1, 2, 3, 4, 5, 6, 7, 8, 9]) >>> list(r) [1, 4, 9, 16, 25, 36, 49, 64, 81]
reduce把一个函数作用在一个序列
[x1, x2, x3, ...]上,这个函数必须接收两个参数,
reduce把结果继续和序列的下一个元素做累积计算,其效果就是:
reduce(f, [x1, x2, x3, x4]) = f(f(f(x1, x2), x3), x4)
比方说对一个序列求和,就可以用reduce实现:
>>> from functools import reduce >>> def add(x, y): ... return x + y ... >>> reduce(add, [1, 3, 5, 7, 9]) 25
filter函数
和
map()类似,
filter()也接收一个函数和一个序列。和
map()不同的是,
filter()把传入的函数依次作用于每个元素,然后根据返回值是
True还是
False决定保留还是丢弃该元素。
例如,在一个
list中,删掉偶数,只保留奇数,可以这么写:
def is_odd(n): return n % 2 == 1 list(filter(is_odd, [1, 2, 4, 5, 6, 9, 10, 15]))
结果:
[1, 5, 9, 15]
注意到
filter()函数返回的是一个
Iterator,也就是一个惰性序列,所以要强迫
filter()完成计算结果,需要用
list()函数获得所有结果并返回
list。
sorted函数
>>> sorted([36, 5, -12, 9, -21]) [-21, -12, 5, 9, 36]
>>> sorted([36, 5, -12, 9, -21], key=abs) [5, 9, -12, -21, 36]
要进行反向排序,不必改动key函数,可以传入第三个参数
reverse=True:
>>> sorted(['bob', 'about', 'Zoo', 'Credit'], key=str.lower, reverse=True) ['Zoo', 'Credit', 'bob', 'about']
相关文章推荐
- Python学习2--高阶函数map、reduce、filter、sorted
- Python3中的高阶函数(map,reduce,filter,sorted)
- Python 函数式编程--高阶函数Map、Reduce、Filter、Sorted
- PythonDay07(进阶)---函数式编程(一):高阶函数、map()函数、reduce()函数、filter()函数、sorted()函数、sort()和sorted()函数的区别
- Python高阶函数——map/reduce/filter/sorted
- python 高阶函数 map reduce filter sorted 闭包 装饰器
- python——高阶函数——map reduce filter sorted
- Python教程学习简记8--Python 高阶函数 map/reduce filter sorted
- python学习(9)高阶函数map、reduce、filter、sorted
- python--lambda表达式,高阶函数map,reduce,filter,sorted,闭包,偏函数,装饰器
- Python进阶:函数式编程(高阶函数,map,reduce,filter,sorted,返回函数,匿名函数,偏函数)...啊啊啊
- python--函数式编程 (高阶函数(map , reduce ,filter,sorted),匿名函数(lambda))
- python高阶函数之lambda,map,reduce,filter
- 不得不知的python高阶函数(Map、Reduce、Filter)
- Python高阶函数map&reduce&filter总结
- Python基础(二)高阶函数map、reduce、filter
- Java 高阶函数的简单使用:map,reduce,filter,sorted
- 9、python map、reduce、filter、sorted
- 【转】python的内建函数:filter,map,reduce,lambda,sorted等
- python常用函数之lambda、reduce、map、sorted、filter