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实现换行符转换的脚本的教程
Apr 16 Python
设计模式中的原型模式在Python程序中的应用示例
Mar 02 Python
Linux中安装Python的交互式解释器IPython的教程
Jun 13 Python
5款非常棒的Python工具
Jan 05 Python
Python网络编程之TCP套接字简单用法示例
Apr 09 Python
Python实现钉钉发送报警消息的方法
Feb 20 Python
详解Python静态网页爬取获取高清壁纸
Apr 23 Python
详解python深浅拷贝区别
Jun 24 Python
如何使用Python自动控制windows桌面
Jul 11 Python
django 自定义filter 判断if var in list的例子
Aug 20 Python
pytorch中tensor张量数据类型的转化方式
Dec 31 Python
一文搞懂Python Sklearn库使用
Aug 23 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(1)
2006/10/09 PHP
用ADODB来让PHP操作ACCESS数据库的方法
2006/12/31 PHP
Codeigniter校验ip地址的方法
2015/03/21 PHP
yii2局部关闭(开启)csrf的验证的实例代码
2017/07/10 PHP
PHP设计模式之装饰器模式定义与用法详解
2018/04/02 PHP
一次因composer错误使用引发的问题与解决
2019/03/06 PHP
Javascript学习笔记5 类和对象
2010/01/11 Javascript
jQuery 打造动态渐变按钮 详细图文教程
2010/04/25 Javascript
jquery 弹出层注册页面等(asp.net后台)
2010/06/17 Javascript
jquery放大镜效果超漂亮噢
2013/11/15 Javascript
js 通过cookie实现刷新不变化树形菜单
2014/10/30 Javascript
js+css实现导航效果实例
2015/02/10 Javascript
Jquery的基本对象转换和文档加载用法实例
2015/02/25 Javascript
轻松实现jquery选项卡切换效果
2016/10/10 Javascript
jQuery双向列表选择器select版
2016/11/01 Javascript
浅谈jQuery before和insertBefore的区别
2016/12/04 Javascript
BootStrap实现鼠标悬停下拉列表功能
2017/02/17 Javascript
原生JS实现垂直手风琴效果
2017/02/19 Javascript
几行js代码实现自适应
2017/02/24 Javascript
微信小程序基于slider组件动态修改标签透明度的方法示例
2017/12/04 Javascript
详解webpack多页面配置记录
2018/01/22 Javascript
详解如何使用nvm管理Node.js多版本
2019/05/06 Javascript
[01:36]DOTA2完美大师赛趣味视频之与队友相处的十万个技巧
2017/11/19 DOTA
python3实现暴力穷举博客园密码
2016/06/19 Python
Python如何爬取微信公众号文章和评论(基于 Fiddler 抓包分析)
2019/06/28 Python
Python 实现自动完成A4标签排版打印功能
2020/04/09 Python
css3 按钮样式简单可扩展创建
2013/03/18 HTML / CSS
2014年圣诞节倒计时网页的制作过程
2014/12/05 HTML / CSS
nohup的用法
2012/11/26 面试题
英文版餐饮业求职信
2013/10/18 职场文书
销售工作人员的自我评价分享
2013/11/10 职场文书
师范学院毕业生求职信范文
2013/12/26 职场文书
自动一体化专业求职信
2014/03/15 职场文书
解决python绘图使用subplots出现标题重叠的问题
2021/04/30 Python
maven依赖的version声明控制方式
2022/01/18 Java/Android
i7 6700处理器相当于i5几代
2022/04/19 数码科技