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对比C语言的编程思想差异
Aug 30 Python
python结合API实现即时天气信息
Jan 19 Python
Python编程之event对象的用法实例分析
Mar 23 Python
python 创建弹出式菜单的实现代码
Jul 11 Python
python数据抓取分析的示例代码(python + mongodb)
Dec 25 Python
PHP实现发送和接收JSON请求
Jun 07 Python
基于Pandas读取csv文件Error的总结
Jun 15 Python
django连接oracle时setting 配置方法
Aug 29 Python
Python 支持向量机分类器的实现
Jan 15 Python
python绘制封闭多边形教程
Feb 18 Python
详解python常用命令行选项与环境变量
Feb 20 Python
Python常遇到的错误和异常
Nov 02 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网站在线人数统计
2008/04/09 PHP
PHP检测用户是否关闭浏览器的方法
2016/02/14 PHP
js浮点数保留两位小数点示例代码(四舍五入)
2013/12/26 Javascript
js+css实现的简单易用兼容好的分页
2013/12/30 Javascript
jquery中attr和prop的区别分析
2015/03/16 Javascript
jQuery取消ajax请求的方法
2015/06/09 Javascript
全面了解addEventListener和on的区别
2016/07/14 Javascript
javascript正则表达式模糊匹配IP地址功能示例
2017/01/06 Javascript
微信小程序开发之选项卡(窗口底部TabBar)页面切换
2017/04/12 Javascript
React Native 截屏组件的示例代码
2017/12/06 Javascript
Vue.js分页组件实现:diVuePagination的使用详解
2018/01/10 Javascript
JS实现简单的星期格式转换功能示例
2018/07/23 Javascript
微信小程序文章详情页面实现代码
2018/09/10 Javascript
JS根据Unix时间戳显示发布时间是多久前【项目实测】
2019/07/10 Javascript
vue+canvas实现移动端手写签名
2020/05/21 Javascript
JavaScript代码模拟鼠标自动点击事件示例
2020/08/07 Javascript
vue打包通过image-webpack-loader插件对图片压缩优化操作
2020/11/12 Javascript
element-plus一个vue3.xUI框架(element-ui的3.x 版初体验)
2020/12/02 Vue.js
Vue组件简易模拟实现购物车
2020/12/21 Vue.js
[01:51]2014DOTA2西雅图邀请赛 MVP 外卡赛black场间采访
2014/07/09 DOTA
Python实现动态添加类的属性或成员函数的解决方法
2014/07/16 Python
Python中operator模块的操作符使用示例总结
2016/06/28 Python
Java分治归并排序算法实例详解
2017/12/12 Python
python读取文本中数据并转化为DataFrame的实例
2018/04/10 Python
详解Python绘图Turtle库
2019/10/12 Python
如何在django中添加日志功能
2020/02/06 Python
python 子类调用父类的构造函数实例
2020/03/12 Python
html5手机端页面可以向右滑动导致样式受影响的问题
2018/06/20 HTML / CSS
品学兼优的大学生自我评价
2013/09/20 职场文书
小摄影师教学反思
2014/04/27 职场文书
党员批评与自我批评发言材料
2014/10/14 职场文书
检讨书模板
2015/01/29 职场文书
2015年医院保卫科工作总结
2015/07/23 职场文书
宣传委员竞选稿
2015/11/19 职场文书
2019员工保密协议书(3篇)
2019/09/23 职场文书
Nginx限流和黑名单配置
2022/05/20 Servers