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/ironpython:从入门到精通
Oct 02 Python
python发腾讯微博代码分享
Jan 10 Python
在Python中实现贪婪排名算法的教程
Apr 17 Python
go和python变量赋值遇到的一个问题
Aug 31 Python
python Crypto模块的安装与使用方法
Dec 21 Python
Python高级用法总结
May 26 Python
Django使用uwsgi部署时的配置以及django日志文件的处理方法
Aug 30 Python
使用Python制作缩放自如的圣诞老人(圣诞树)
Dec 25 Python
Python Selenium参数配置方法解析
Jan 19 Python
python GUI库图形界面开发之PyQt5控件QTableWidget详细使用方法与属性
Feb 25 Python
pandas中read_csv、rolling、expanding用法详解
Apr 21 Python
python实现图书馆抢座(自动预约)功能的示例代码
Sep 29 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判断两个浮点数是否相等的方法
2015/03/14 PHP
php导出生成word的方法
2015/12/25 PHP
thinkphp3.x连接mysql数据库的方法(具体操作步骤)
2016/05/19 PHP
详解PHP防止直接访问.php 文件的实现方法
2017/07/28 PHP
自定义jQuery选项卡插件实例
2013/03/27 Javascript
jquery等宽输出文字插件使用介绍
2013/09/18 Javascript
JS如何判断移动端访问设备并解析对应CSS
2013/11/27 Javascript
小结Node.js中非阻塞IO和事件循环
2014/09/18 Javascript
JS+CSS实现带小三角指引的滑动门效果
2015/09/22 Javascript
vue实现ajax滚动下拉加载,同时具有loading效果(推荐)
2017/01/11 Javascript
微信小程序开发之好友列表字母列表跳转对应位置
2017/09/26 Javascript
vue-router路由懒加载的实现(解决vue项目首次加载慢)
2018/08/28 Javascript
ES6 Array常用扩展的应用实例分析
2019/06/26 Javascript
Vue.js页面中有多个input搜索框如何实现防抖操作
2019/11/04 Javascript
JavaScript中变量提升机制示例详解
2019/12/27 Javascript
JS页面动态绘图工具SVG,Canvas,VML介简介
2020/10/16 Javascript
[01:45]2014DOTA2 TI预选赛预选赛 战前探营!
2014/05/21 DOTA
[01:05:24]Ti4 冒泡赛第二天 iG vs NEWBEE 3
2014/07/15 DOTA
[04:40]2016国际邀请赛中国区预选赛全程TOP10镜头集锦
2016/07/01 DOTA
Python的time模块中的常用方法整理
2015/06/18 Python
python实现将英文单词表示的数字转换成阿拉伯数字的方法
2015/07/02 Python
定制FileField中的上传文件名称实例
2017/08/23 Python
Python读取数据集并消除数据中的空行方法
2018/07/12 Python
用Python读取几十万行文本数据
2018/12/24 Python
在Python中字典根据多项规则排序的方法
2019/01/21 Python
Python自定义函数计算给定日期是该年第几天的方法示例
2019/05/30 Python
python flask web服务实现更换默认端口和IP的方法
2019/07/26 Python
Tensorflow获取张量Tensor的具体维数实例
2020/01/19 Python
Python Process创建进程的2种方法详解
2021/01/25 Python
英国性感内衣和睡衣品牌:Bluebella
2018/01/26 全球购物
英国玛莎百货美国官网:Marks & Spencer美国
2018/11/06 全球购物
校庆标语集锦
2014/06/25 职场文书
2014年信访维稳工作总结
2014/12/08 职场文书
主持稿开场白
2015/06/01 职场文书
python利用while求100内的整数和方式
2021/11/07 Python
Win10鼠标轨迹怎么开 Win10显示鼠标轨迹方法
2022/04/06 数码科技