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实现的Google IP 可用性检测脚本
Apr 23 Python
Python基于回溯法子集树模板解决数字组合问题实例
Sep 02 Python
python中返回矩阵的行列方法
Apr 04 Python
Python实现的绘制三维双螺旋线图形功能示例
Jun 23 Python
Python Django框架实现应用添加logging日志操作示例
May 17 Python
python爬虫 模拟登录人人网过程解析
Jul 31 Python
python实现京东订单推送到测试环境,提供便利操作示例
Aug 09 Python
python实现的多任务版udp聊天器功能案例
Nov 13 Python
在django-xadmin中APScheduler的启动初始化实例
Nov 15 Python
python爬虫之遍历单个域名
Nov 20 Python
pytorch1.0中torch.nn.Conv2d用法详解
Jan 10 Python
keras中模型训练class_weight,sample_weight区别说明
May 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中VC6、VC9、TS、NTS版本的区别与用法详解
2013/10/26 PHP
详解php的socket通信
2015/08/11 PHP
PHP读书笔记_运算符详解
2016/07/01 PHP
PHP图片裁剪与缩放示例(无损裁剪图片)
2017/02/08 PHP
Flash对联广告的关闭按钮讨论
2007/01/30 Javascript
用JS剩余字数计算的代码
2008/07/03 Javascript
JQuery 遮罩层实现(mask)实现代码
2010/01/09 Javascript
javascript中substr,substring,slice.splice的区别说明
2010/11/25 Javascript
AngularJS使用ng-class动态增减class样式的方法示例
2017/05/18 Javascript
Django与Vue语法的冲突问题完美解决方法
2017/12/14 Javascript
浅谈React中的元素、组件、实例和节点
2018/02/27 Javascript
JavaScript使用math.js进行精确计算操作示例
2018/06/19 Javascript
Vue如何实现响应式系统
2018/07/11 Javascript
详解vue通过NGINX部署在子目录或者二级目录实践
2018/09/03 Javascript
node实现生成带参数的小程序二维码并保存到本地功能示例
2018/12/05 Javascript
nodemon实现Typescript项目热更新的示例代码
2019/11/19 Javascript
[02:56]DOTA2英雄基础教程 巨魔战将
2013/12/10 DOTA
[01:09:24]Ti4开幕式
2014/07/19 DOTA
Python计算库numpy进行方差/标准方差/样本标准方差/协方差的计算
2018/12/28 Python
对python numpy.array插入一行或一列的方法详解
2019/01/29 Python
通过python实现随机交换礼物程序详解
2019/07/10 Python
python爬虫 模拟登录人人网过程解析
2019/07/31 Python
python定间隔取点(np.linspace)的实现
2019/11/27 Python
解决python图像处理图像赋值后变为白色的问题
2020/06/04 Python
Python如何用wx模块创建文本编辑器
2020/06/07 Python
白俄罗斯女装和针织品网上商店:Presli.by
2019/10/13 全球购物
Linux开机引导的步骤是什么
2015/10/19 面试题
用Python写一个for循环的例子
2016/07/19 面试题
简单而又朴实的个人求职信分享
2013/12/12 职场文书
在校学生职业规划范文
2014/01/08 职场文书
给国外客户的邀请函
2014/01/30 职场文书
网络编辑岗位职责范本
2014/02/10 职场文书
大学生未来职业生涯规划书
2014/02/15 职场文书
上帝也疯狂观后感
2015/06/09 职场文书
学校财务管理制度
2015/08/04 职场文书
2016国培学习心得体会
2016/01/08 职场文书