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之从if开始语句的征程
Sep 14 Python
python实现查询苹果手机维修进度
Mar 16 Python
Python中的字典与成员运算符初步探究
Oct 13 Python
让python 3支持mysqldb的解决方法
Feb 14 Python
浅谈Python2.6和Python3.0中八进制数字表示的区别
Apr 28 Python
详解Python文本操作相关模块
Jun 22 Python
Pandas:DataFrame对象的基础操作方法
Jun 07 Python
Python基础知识点 初识Python.md
May 14 Python
python SQLAlchemy的Mapping与Declarative详解
Jul 04 Python
numpy np.newaxis 的实用分享
Nov 30 Python
python中设置超时跳过,超时退出的方式
Dec 13 Python
Python3使用 GitLab API 进行批量合并分支
Oct 15 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
冰滴咖啡制作步骤
2021/03/03 冲泡冲煮
php 无限极分类
2008/03/27 PHP
php中opendir函数用法实例
2014/11/15 PHP
PHP会话处理的10个函数
2015/08/11 PHP
PHP中strncmp()函数比较两个字符串前2个字符是否相等的方法
2016/01/07 PHP
javascript自动生成包含数字与字符的随机字符串
2015/02/09 Javascript
jQuery遍历页面所有CheckBox查看是否被选中的方法
2015/04/14 Javascript
Angularjs中UI Router全攻略
2016/01/29 Javascript
Node.js包管理器Yarn的入门介绍与安装
2016/10/17 Javascript
js对象实例详解(JavaScript对象深度剖析,深度理解js对象)
2017/09/21 Javascript
深入理解JavaScript和TypeScript中的class
2018/04/22 Javascript
jQuery实现鼠标移到某个对象时弹出显示层功能
2018/08/23 jQuery
bootstrap table实现合并单元格效果
2018/12/24 Javascript
解决vue 表格table列求和的问题
2019/11/06 Javascript
jquery实现图片无缝滚动 蒙版遮蔽效果
2020/01/11 jQuery
JS实现长图上下滚动效果
2020/03/19 Javascript
vue中echarts图表大小适应窗口大小且不需要刷新案例
2020/07/19 Javascript
antd vue table跨行合并单元格,并且自定义内容实例
2020/10/28 Javascript
nodejs中内置模块fs,path常见的用法说明
2020/11/07 NodeJs
[01:19]DOTA2城市挑战赛报名开始 开启你的城市传奇
2018/03/23 DOTA
Python3读取文件常用方法实例分析
2015/05/22 Python
Python图算法实例分析
2016/08/13 Python
用virtualenv建立多个Python独立虚拟开发环境
2017/07/06 Python
浅谈django model postgres的json字段编码问题
2018/01/05 Python
解读python logging模块的使用方法
2018/04/17 Python
Python替换月份为英文缩写的实现方法
2019/07/15 Python
Python imread、newaxis用法详解
2019/11/04 Python
Django调用支付宝接口代码实例详解
2020/04/04 Python
Python+Selenium随机生成手机验证码并检查页面上是否弹出重复手机号码提示框
2020/09/21 Python
学生打架检讨书1000字
2014/01/16 职场文书
小溪流的歌教学反思
2014/02/13 职场文书
商场客服专员岗位职责
2014/06/13 职场文书
机电专业毕业生求职信
2014/07/01 职场文书
感恩祖国演讲稿
2014/09/09 职场文书
自荐信格式模板
2015/03/27 职场文书
Java实现二维数组和稀疏数组之间的转换
2021/06/27 Java/Android