python中匿名函数关键字(浅谈python之高阶函数和匿名函数)
python中匿名函数关键字
浅谈python之高阶函数和匿名函数map()
map()函数接收两个参数,一个是函数,一个是Iterable,map将传入的函数依次作用到序列的每个元素,并把结果作为新的Iterator返回。
|
def func(x): return x * x r = map (func, [ 1 , 2 , 3 , 4 , 5 ]) print ( type (r)) r = list (r) print (r) |
输出结果:
<class 'map'>
[1, 4, 9, 16, 25]
可以看出,map让函数func作用于列表的每一项,使列表的每一项都被函数func执行一次,即列表的每一项都进行平方。其返回值是map类型。
reduce()
reduce函数必须接收两个参数,把一个函数作用在一个序列[x1, x2, x3, ...]上,然后再把结果继续和序列的下一个元素做累积计算。
|
from functools import reduce def fn(x, y): return x * 10 + y f = reduce (fn, [ 1 , 3 , 5 , 7 , 9 ]) # 把序列变为整数 print (f) print ( type (f)) |
输出结果:
13579
<class 'int'>
和map不同,虽然reduce也是作用于每个元素,但是reduce的作用结果要用在下次和另一个元素做累积计算。
map()和reduce()的结合使用
|
from functools import reduce def fn(x, y): return x * 10 + y def char2num(s): digits = { '0' : 0 , '1' : 1 , '2' : 2 , '3' : 3 , '4' : 4 , '5' : 5 , '6' : 6 , '7' : 7 , '8' : 8 , '9' : 9 } return digits[s] f = reduce (fn, map (char2num, '13579' )) print (f) |
输出结果:
13579
可以将字符串类型转换为int类型
filter()
filter()函数用于过滤序列,接收一个函数和一个序列。和map()不同的是,filter()把传入的函数依次作用于每个元素,然后根据返回值是True还是False决定保留还是丢弃该元素。
|
def not_empty(s): return s and s.strip() # 不能直接写s.strip() f = filter (not_empty, [ 'A' , ' ', ' B ', None, ' C ', ' ']) print ( type (f)) print ( list (f)) |
输出结果:
<class 'filter'>
['A', 'B', 'C']
sorted()
sorted()函数也是一个高阶函数,在列表的学习中初步接触了sorted(),但其实它还可以接收一个key函数来实现自定义的排序。
key指定的函数将作用于被排序对象的每一个元素上,并根据key函数返回的结果进行排序。
|
l = sorted ([ 36 , 5 , - 12 , 9 , - 21 ], key = abs ) # 按绝对值大小排序 print (l) s = sorted ([ 'bob' , 'about' , 'Zoo' , 'Credit' ]) # 按ASCII大小排序 print (s) sl = sorted ([ 'bob' , 'about' , 'Zoo' , 'Credit' ], key = str .lower) # 忽略大小写排序 print (sl) sr = sorted ([ 'bob' , 'about' , 'Zoo' , 'Credit' ], key = str .lower, reverse = True ) # 反向排序 print (sr) |
输出结果:
[5, 9, -12, -21, 36]
['Credit', 'Zoo', 'about', 'bob']
['about', 'bob', 'Credit', 'Zoo']
['Zoo', 'Credit', 'bob', 'about']
同样的,sorted()也可以对元组和字典进行排序
|
from operator import itemgetter # 需要使用operator模块 L = [( 'Bob' , 75 ), ( 'Adam' , 92 ), ( 'Bart' , 66 ), ( 'Lisa' , 88 )] print ( sorted (L, key = itemgetter( 0 ))) |
输出结果:
[('Adam', 92), ('Bart', 66), ('Bob', 75), ('Lisa', 88)]
当然,也能以values的值来排序,对字典的排序与元组类似,但返回值不同。
|
from operator import itemgetter dic = { "Bob" : 75 , "Adam" : 92 , "Lisa" : 88 } print ( sorted (dic,key = itemgetter( 0 ))) print ( sorted (dic, key = itemgetter( 1 ))) |
输出结果:
['Adam', 'Bob', 'Lisa']
['Adam', 'Lisa', 'Bob']
可以看到,不管是以key值进行排序,还是以value值进行排序,排序结果只返回对应顺序的key值。
匿名函数
|
f = list ( map ( lambda x: x * x, [ 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 ])) print (f) |
输出结果:
[1, 4, 9, 16, 25, 36, 49, 64, 81]
上面就是一个匿名函数的使用,匿名函数 lambda x: x * x 实际上就是:
|
def f(x): return x * x |
只是在这里没有显式地定义函数,这样因为函数没有名字,不必担心函数名冲突,而且代码看起来也简洁。
以上所述是小编给大家介绍的python之高阶函数和匿名函数详解整合,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对开心学习网网站的支持!
原文链接:https://www.cnblogs.com/zuoxide/p/10557870.html
- python随机生成时间戳(python时间序列按频率生成日期的方法)
- python贪吃蛇项目介绍(python简单贪吃蛇开发)
- python爬虫模块教程(Python爬虫之UserAgent的使用实例)
- 未来10年python前景(Python应用领域和就业形势分析总结)
- python之pil模块使用(Python3安装Pillow与PIL的方法)
- python编写程序读写数据库(详解js文件通过python访问数据库方法)
- python socket 设置通信协议(详解python中TCP协议中的粘包问题)
- python协程使用教程(对Python协程之异步同步的区别详解)
- python 多线程与多进程(python 多线程串行和并行的实例)
- ubuntu python3.7安装(详解Ubuntu16.04安装Python3.7及其pip3并切换为默认版本)
- 用python怎么找工作(利用python如何在前程无忧高效投递简历)
- python配合docker(Docker构建python Flask+ nginx+uwsgi容器)
- python怎么自动生成报告(python根据文章标题内容自动生成摘要的实例)
- python3列表的使用教程(对Python3 pyc 文件的使用详解)
- python报表可视化(使用Python快速制作可视化报表的方法)
- pythongui实战案例(Python GUI编程完整示例)
- 吉林舒兰 封城 15人确诊 276人隔离,出现跨省传播(吉林舒兰封城)
- 四月新番CP人气榜公布,《剃须》两度上榜,沙优不是女朋友(四月新番CP人气榜公布)
- 2019年外媒秋季新番动画角色CP排行榜,桐人和爱丽丝落榜(2019年外媒秋季新番动画角色CP排行榜)
- 新一小兰领衔 盘点动漫中的那些 远距离恋爱情侣(盘点动漫中的那些)
- 大事件 合肥四中火了(大事件合肥四中火了)
- 翼龙贷组织出借人调研 感受鄱阳 借 来的致富路(翼龙贷组织出借人调研)
热门推荐
- 如何筛选求职招聘广告
- docker创建容器使用教程(Docker容器连接实现步骤解析)
- zabbix支持oracleodbc功能吗(使用zabbix监控oracle数据库的方法详解)
- docker运行redis并操作(Docker安装MySQL和Redis的方法步骤)
- css选择器一般写多少(深入理解CSS选择器优先级)
- mysql完全快速清空一个表(浅谈MySQL如何优雅的做大表删除)
- php去水印方法(PHP开发的文字水印,缩略图,图片水印实现类与用法示例)
- python获取游戏画面信息(python游戏开发之视频转彩色字符动画)
- Asp.Net实现网站的快捷方式
- 织梦系统的seo教程(织梦后台SEO优化和修改关键字的方法)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9