map reduce filter sorted (高阶函数)
来源:互联网 发布:易企秀编辑器 js 编辑:程序博客网 时间:2024/06/05 10:03
map()函数
map函数接收两个参数,一个是函数,一个是Iterable(可迭代对象 (集合数据类型如list
、dict
、str)
)。
map
将传入的函数依次作用到序列的每个元素,并把结果作为新的Iterator
返回,由于结果是一个Iterator
,Iterator
是惰性序列,因此通过list()
函数让它把整个序列都计算出来并返回一个list。
eg: list(map(函数,Iterable))
reduce()函数
reduce
把一个函数作用在一个序列[x1, x2, x3, ...]
上,这个函数必须接收两个参数,reduce
把结果继续和序列的下一个元素做累积计算,其效果就是:
reduce(f, [x1, x2, x3, x4]) = f(f(f(x1, x2), x3), x4)
配合map()函数:
def str2int(s): #自己写一个把字符串转化为整数的函数... def f(x,y):
... return x*10+y
... def char2num(s):
... return{'0':0,'1':1,'2':2,'3':3,'4':4,'5':5}[s]
... return reduce(f,map(char2num,s))
...
>>> print(str2int('2324'))
2324
还可以用lambda函数进一步简化成:
>>> def char2num(s):
... return{'0':0,'1':1,'2':2,'3':3,'4':4,'5':5}[s]
...
>>> def str2int(s):
... return reduce(lambda x,y:x*10+y,map(char2num,s)) #lambda函数代替上面的f()函数
...
>>> print(str2int('342422'))
342422
filter()函数
用于过滤序列。
接收一个函数和一个序列。(类似map()函数,filter()把传入的函数依次作用于每个元素,然后根据返回值是True还是False决定保留还是丢弃该元素。)
可见用filter()
这个高阶函数,关键在于正确实现一个“筛选”函数。
用filter求素数:
def _odd_iter(): #先构造一个从3开始的奇数序列
n=1 #注意这是一个生成器,并且是一个无限序列。
while True:
n+=2
yield n
def _not_divisible(n): #定义一个筛选函数
return lambda x:x%n>0
def primes(): #定义一个生成器,不断返回下一个素数
yield 2
it = _odd_iter()
while True:
n=next(it)
yield n
it = filter(_not_divisible(n),it) #筛选
for n in primes(): #设置一个退出循环的条件:
if n < 1000:
print(n)
else:
break
sorted函数
可以对list进行排序
此外,sorted()
函数也是一个高阶函数,它还可以接收一个key
函数来实现自定义的排序,例如按绝对值大小排序:
>>> sorted([36, 5, -12, 9, -21], key=abs)[5, 9, -12, -21, 36]
key指定获得函数作用到序列的每一个元素上,然后根据key函数返回的结果来排序。对字符串排序:默认上,大写字母Z
会排在小写字母a
的前面。
我们给sorted
传入key函数,即可实现忽略大小写的排序:
>>> sorted(['bob', 'about', 'Zoo', 'Credit'], key=str.lower)['about', 'bob', 'Credit', 'Zoo']
要进行反向排序,不必改动key函数,可以传入第三个参数reverse=True
:
>>> sorted(['bob', 'about', 'Zoo', 'Credit'], key=str.lower, reverse=True)['Zoo', 'Credit', 'bob', 'about']
形式:sorted(L, key=str.lower, reverse=True)解释:key为排序所依据的规则,reverse表示反序
- 高阶函数:map、reduce、filter、sorted
- map reduce filter sorted (高阶函数)
- Python3中的高阶函数(map,reduce,filter,sorted)
- Python学习2--高阶函数map、reduce、filter、sorted
- python 2.7 : 高阶函数map/reduce/filter/sorted
- Python高阶函数——map/reduce/filter/sorted
- python学习 高阶函数/map()/reduce()/filter()/sorted()
- 高阶函数用法:map、reduce、filter、sorted、zip
- Python内置高阶函数map,reduce,filter,sorted,zip
- Python学习-高阶函数Map/reduce/filter/sorted
- Python函数式编程(高阶函数、map()、reduce()、filter()、sorted()、lambda、decorator装饰器)
- python学习(9)高阶函数map、reduce、filter、sorted
- Python函数式编程(高阶函数 <map/reduce filter sorted> 返回函数 匿名函数 装饰器 偏函数)
- javaScript 高阶函数 map/reduce/filter
- 高阶函数:Filter、Map和Reduce
- python 高阶函数 map/reduce/filter/
- Python教程学习简记8--Python 高阶函数 map/reduce filter sorted
- python 高阶函数 map reduce filter sorted 闭包 装饰器
- 点击出现小弹窗并显示需要的内容
- SpringBoot + thymeleaf
- 部分和问题 (搜索)
- 非常简单的轮播方法
- 依赖注入Dagger2
- map reduce filter sorted (高阶函数)
- tomcat也启动了,为什么http://localhost:8080仍然找不到网页?
- jsp运行原理
- 彻底卸载软件的注册表
- 输入字符串输出Unicode编码
- 在R语言环境中设置JAVA_HOME的路径
- H
- 服务器免密登录以及SecureCRT免密登录
- 【SQL】 Transact -SQL 语句