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的另外几种语言实现
Jan 29 Python
Python基于正则表达式实现文件内容替换的方法
Aug 30 Python
python编写暴力破解zip文档程序的实例讲解
Apr 24 Python
Python 使用PIL numpy 实现拼接图片的示例
May 08 Python
python pandas 对series和dataframe的重置索引reindex方法
Jun 07 Python
浅谈Python采集网页时正则表达式匹配换行符的问题
Dec 20 Python
对python中不同模块(函数、类、变量)的调用详解
Jul 16 Python
Python lambda表达式filter、map、reduce函数用法解析
Sep 11 Python
简单了解Python write writelines区别
Feb 27 Python
ubuntu 安装pyqt5和卸载pyQt5的方法
Mar 24 Python
Opencv求取连通区域重心实例
Jun 04 Python
Pytorch 实现变量类型转换
May 17 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+mysql实现数据库随机重排实例
2014/10/17 PHP
Django中的cookie与session操作实例代码
2017/08/17 PHP
JavaScript高级程序设计(第3版)学习笔记11 内建js对象
2012/10/11 Javascript
关于div自适应高度/左右高度自适应一致的js代码
2013/03/22 Javascript
Extjs4 GridPanel的主要配置参数详细介绍
2013/04/18 Javascript
JS操作Cookie写入和读取实例代码
2013/10/20 Javascript
同域jQuery(跨)iframe操作DOM(实例讲解)
2013/12/19 Javascript
node.js中使用socket.io制作命名空间
2014/12/15 Javascript
javascript排序函数实现数字排序
2015/06/26 Javascript
使用HTML+CSS+JS制作简单的网页菜单界面
2015/07/27 Javascript
详解JavaScript中双等号引起的隐性类型转换
2016/05/30 Javascript
关于session和cookie的简单理解
2016/06/08 Javascript
基于Bootstrap实现下拉菜单项和表单导航条(两个菜单项,一个下拉菜单和登录表单导航条)
2016/07/22 Javascript
JavaScript实现事件的中断传播和行为阻止方法示例
2017/01/20 Javascript
详解angular中通过$location获取路径(参数)的写法
2017/03/21 Javascript
使用cx_freeze把python打包exe示例
2014/01/24 Python
跟老齐学Python之编写类之一创建实例
2014/10/11 Python
python根据出生日期返回年龄的方法
2015/03/26 Python
python实现计算倒数的方法
2015/07/11 Python
Python实现监控键盘鼠标操作示例【基于pyHook与pythoncom模块】
2018/09/04 Python
解决PySide+Python子线程更新UI线程的问题
2019/01/11 Python
Pycharm以root权限运行脚本的方法
2019/01/19 Python
Python中dict和set的用法讲解
2019/03/28 Python
Python 微信公众号文章爬取的示例代码
2020/11/30 Python
利用css3制作3D样式按钮实现代码
2013/03/18 HTML / CSS
HTML5 Canvas 起步(1) - 基本概念
2009/05/12 HTML / CSS
使用HTML5 Canvas API控制字体的显示与渲染的方法
2016/03/24 HTML / CSS
HTML5 video循环播放多个视频的方法步骤
2020/08/06 HTML / CSS
凯普林包包西班牙官网:Kipling西班牙
2019/04/12 全球购物
学校岗位设置方案
2014/01/16 职场文书
司法所长先进事迹
2014/06/02 职场文书
卖房协议书样本
2014/10/30 职场文书
2014年家长学校工作总结
2014/11/20 职场文书
安全生产先进个人总结
2015/02/15 职场文书
行政诉讼答辩状
2015/05/21 职场文书
任命书格式模板
2015/09/22 职场文书