Python标准库:内置函数max(iterable, *[, key, default])说明


Posted in Python onApril 25, 2020

max(arg1, arg2, *args[, key])

本函数是迭代对象iterable进行比较,找出最大值返回。当key参数不为空时,就以key的函数对象为判断的标准。

例子:

#max()
 
array1 = range(10)
array2 = range(0, 20, 3)
print('max(array1)=', max(array1))
print('max(array2)=', max(array2))
print('max(array1,)=', max(array1, key=lambda x: x > 3) )
print(max(1, 2))
print(max('ah', 'bf', key=lambda x: x[1]))
print(max(array1, array2, key=lambda x: x[1]))
 
def comparator(x):
 return x[2]
print(max('ah2', 'bf3', key=comparator))

结果输出如下:

max(array1)= 9
max(array2)= 18
max(array1,)= 4

2
ah
range(0, 20, 3)
bf3

补充知识:python之lambda表达式 : 对于python中max函数的key参数的理解与使用

新版很6,预览效果和实际显示不同,代码块那里显示成html格式的我表示十分无语。将就看吧。

之前在看别人代码的时候看到了这样的用法:

return max(self._children.items(),
key=lambda act_node: act_node[1].get_value(c_puct))

表示对这个key值十分不解,然后上网一搜。哦!参考资料

lambda表达式:

其实lambda是一个匿名函数,我们通常叫它lambda表达式,lambda存在意义就是对简单函数的简洁表示。

比如我们想实现这样的函数:

def func(arg):
return arg + 1

为了使代码更简洁,lambda登场,把上面的函数变形成:

lambda arg : arg + 1

所以,lambda a : b , 实际上就是:lambda是一个输入值为a,返回值为b的函数。

max函数中的lambda表达式

现在回到我们的max函数中,就十分容易理解了:

函数形式:max( x ,key=lambda a : b ) # x可以是任何数值,可以有多个x值

这个函数的意思是:我们先把x值带入lambda函数转换成b值,然后再将b值进行比较。

上代码:

haha0=max('az','za', key=lambda a: a[0])
haha1=max('az','za', key=lambda a: a[1])
haha2=max(range(10),key=lambda a:a>3)
 
print(haha0)  #输出za
print(haha1)  #输出az
print(haha2)  #输出4

以haha0为例子:我们传入az,za,为了方便解释称之为虚拟比较,但是因为我们引入了lambda表达式,所以,我们实际上比较的是,az中的第一位a和za中第一位的z,由ascii码表可以知道a是小于z的,所以在这里最大的是z,那么我们返回的就是z的虚拟比较变量,也就是本来的"za"。

haha2的用法十分少见,实际上比较的是

F F F T T T T T T T ( False 和 True )

T是肯定比F大的,但是一堆True哪里能互相比较大小呢,所以就输出第一个True值的虚拟比较变量,也就是4啦。

max中带有lambda的这个写法的意义在于代码变得更简洁。

假如我们有一个字典,里面记录着人名和相应年龄,现在我们想要在里面筛选出年龄最大的那个人的一条字典记录。

x={"老王" :18 , "小李":99}
haha3=max(x.items(), key=lambda a: a[1])
print(haha3)  #输出('小李', 99)

要注意使用字典的话一定要x.items(),不能直接输入x值,达不到我们想要的效果。

其实我们大可不必这么写,直接从字典中提取出年龄列表进行比较:

x={"老王" :18 , "小李":99}
y=[]
for name,age in x.items():
 y.append(age)
haha4=max(y)
print(haha4)

只是这样写是比较麻烦以及浪费内存的不是么?我想这就是max函数中设置lambda表达式的意义。

以上这篇Python标准库:内置函数max(iterable, *[, key, default])说明就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python高手之路python处理excel文件(方法汇总)
Jan 07 Python
浅谈numpy中linspace的用法 (等差数列创建函数)
Jun 07 Python
使用GitHub和Python实现持续部署的方法
May 09 Python
Django admin model 汉化显示文字的实现方法
Aug 12 Python
python实现的生成word文档功能示例
Aug 23 Python
Python统计时间内的并发数代码实例
Dec 28 Python
如何使用 Python 读取文件和照片的创建日期
Sep 05 Python
使用python将微信image下.dat文件解密为.png的方法
Nov 30 Python
python scipy 稀疏矩阵的使用说明
May 26 Python
Python selenium模拟网页点击爬虫交管12123违章数据
May 26 Python
Flask搭建一个API服务器的步骤
May 28 Python
Python 绘制多因子柱状图
May 11 Python
python except异常处理之后不退出,解决异常继续执行的实现
Apr 25 #Python
python 追踪except信息方式
Apr 25 #Python
Python实现捕获异常发生的文件和具体行数
Apr 25 #Python
python IDLE添加行号显示教程
Apr 25 #Python
IDLE下Python文件编辑和运行操作
Apr 25 #Python
python 字典item与iteritems的区别详解
Apr 25 #Python
解决reload(sys)后print失效的问题
Apr 25 #Python
You might like
解析PHP中的unset究竟会不会释放内存
2013/07/18 PHP
PHP中把错误日志保存在系统日志中(Windows系统)
2015/06/23 PHP
PHP统计目录中文件以及目录中目录大小的方法
2016/01/09 PHP
如何通过View::first使用Laravel Blade的动态模板详解
2017/09/21 PHP
自写的利用PDO对mysql数据库增删改查操作类
2018/02/19 PHP
写出更好的JavaScript程序之undefined篇(中)
2009/11/23 Javascript
解决jquery异步按一定的时间间隔刷新问题
2012/12/10 Javascript
JS刷新框架外页面七种实现代码
2013/02/18 Javascript
JS实现下拉框的动态添加(附效果)
2013/04/03 Javascript
jquery的ajax异步请求接收返回json数据实例
2014/06/16 Javascript
jquery.zclip轻量级复制失效问题
2017/01/08 Javascript
vue2组件实现懒加载浅析
2017/03/29 Javascript
用Node编写RESTful API接口的示例代码
2018/07/04 Javascript
vue Treeselect 树形下拉框:获取选中节点的ids和lables操作
2020/08/15 Javascript
vue 动态添加的路由页面刷新时失效的原因及解决方案
2021/02/26 Vue.js
Python中的defaultdict模块和namedtuple模块的简单入门指南
2015/04/01 Python
Python使用smtplib模块发送电子邮件的流程详解
2016/06/27 Python
浅析Python的web.py框架中url的设定方法
2016/07/11 Python
Python学习pygal绘制线图代码分享
2017/12/09 Python
python实现学生信息管理系统
2020/04/05 Python
python Flask 装饰器顺序问题解决
2018/08/08 Python
我们为什么要减少Python中循环的使用
2019/07/10 Python
python爬虫 urllib模块url编码处理详解
2019/08/20 Python
详解基于python的多张不同宽高图片拼接成大图
2019/09/26 Python
Win10下python 2.7与python 3.7双环境安装教程图解
2019/10/12 Python
Python气泡提示与标签的实现
2020/04/01 Python
pyinstaller将含有多个py文件的python程序做成exe
2020/04/29 Python
Python二元算术运算常用方法解析
2020/09/15 Python
canvas实现滑动验证的实现示例
2020/08/11 HTML / CSS
阿巴庭院:Abba Patio
2019/06/18 全球购物
技校毕业生的自我评价
2013/12/27 职场文书
渡河少年教学反思
2014/02/12 职场文书
关心下一代工作先进事迹
2014/08/15 职场文书
党的群众路线教育实践活动实施方案
2014/10/31 职场文书
高中团支书竞选稿
2015/11/21 职场文书
css position fixed 左右双定位的实现代码
2021/04/29 HTML / CSS