Python max内置函数详细介绍


Posted in Python onNovember 17, 2016

Python max内置函数

max(iterable, *[, key, default])

max(arg1, arg2, *args[, key])

Return the largest item in an iterable or the largest of two or more arguments.

If one positional argument is provided, it should be an iterable. The largest item in the iterable is returned. If two or more positional arguments are provided, the largest of the positional arguments is returned.

There are two optional keyword-only arguments. The key argument specifies a one-argument ordering function like that used for list.sort(). The default argument specifies an object to return if the provided iterable is empty. If the iterable is empty and default is not provided, a ValueError is raised.

If multiple items are maximal, the function returns the first one encountered. This is consistent with other sort-stability preserving tools such as sorted(iterable, key=keyfunc, reverse=True)[0] and heapq.nlargest(1, iterable, key=keyfunc).

 说明:

1. 函数功能为取传入的多个参数中的最大值,或者传入的可迭代对象元素中的最大值。默认数值型参数,取值大者;字符型参数,取字母表排序靠后者。还可以传入命名参数key,其为一个函数,用来指定取最大值的方法。default命名参数用来指定最大值不存在时返回的默认值。

2. 函数至少传入两个参数,但是有只传入一个参数的例外,此时参数必须为可迭代对象,返回的是可迭代对象中的最大元素。

>>> max(1) # 传入1个参数报错
Traceback (most recent call last):
 File "<pyshell#0>", line 1, in <module>
  max(1)
TypeError: 'int' object is not iterable
>>> max(1,2) # 传入2个参数 取2个中较大者
2
>>> max(1,2,3) # 传入3个参数 取3个中较大者
3
>>> max('1234') # 传入1个可迭代对象,取其最大元素值
'4'

3. 当传入参数为数据类型不一致时,传入的所有参数将进行隐式数据类型转换后再比较,如果不能进行隐式数据类型转换,则会报错。

>>> max(1,1.1,1.3E1) # 整数与浮点数可取最大值
13.0
>>> max(1,2,3,'3') # 数值与字符串不能取最大值
Traceback (most recent call last):
 File "<pyshell#5>", line 1, in <module>
  max(1,2,3,'3')
TypeError: unorderable types: str() > int()

>>> max([1,2],[1,3]) # 列表与列表可取最大值
[1, 3]
>>> max([1,2],(1,3)) # 列表与元组不能取最大值
Traceback (most recent call last):
 File "<pyshell#7>", line 1, in <module>
  max([1,2],(1,3))
TypeError: unorderable types: tuple() > list()

4. 当存在多个相同的最大值时,返回的是最先出现的那个最大值。

#定义a、b、c 3个列表
>>> a = [1,2]
>>> b = [1,1]
>>> c = [1,2]

#查看a、b、c 的id
>>> id(a)
68128320
>>> id(b)
68128680
>>> id(c)
68128240

#取最大值
>>> d = max(a,b,c)
>>> id(d)
68128320

#验证是否最大值是否是a
>>> id(a) == id(d)
True

5. 默认数值型参数,取值大者;字符型参数,取字母表排序靠后者;序列型参数,则依次按索引位置的值进行比较取最大者。还可以通过传入命名参数key,指定取最大值方法。

>>> max(1,2) # 取数值大者
2
>>> max('a','b') # 取排序靠后者
'b'
>>> max('ab','ac','ad') # 依次按索引比较取较大者
'ad'

>>> max(-1,0) # 数值默认去数值较大者
0
>>> max(-1,0,key = abs) # 传入了求绝对值函数,则参数都会进行求绝对值后再取较大者
-1

6. key参数的另外一个作用是,不同类型对象本来不能比较取最大值的,传入适当的key函数,变得可以比较能取最大值了。

>>> max(1,2,'3') #数值和字符串不能取最大值
Traceback (most recent call last):
 File "<pyshell#21>", line 1, in <module>
  max(1,2,'3')
TypeError: unorderable types: str() > int() 
>>> max(1,2,'3',key = int) # 指定key为转换函数后,可以取最大值
'3'

>>> max((1,2),[1,1]) #元组和列表不能取最大值
Traceback (most recent call last):
 File "<pyshell#24>", line 1, in <module>
  max((1,2),[1,1])
TypeError: unorderable types: list() > tuple()
>>> max((1,2),[1,1],key = lambda x : x[1]) #指定key为返回序列索引1位置的元素后,可以取最大值
(1, 2)
复制代码

7. 当只传入的一个可迭代对象时,而且可迭代对象为空,则必须指定命名参数default,用来指定最大值不存在时,函数返回的默认值。

>>> max(()) #空可迭代对象不能取最大值
Traceback (most recent call last):
 File "<pyshell#26>", line 1, in <module>
  max(())
ValueError: max() arg is an empty sequence
>>> max((),default=0) #空可迭代对象,指定default参数为默认值
0
>>> max((),0) #默认值必须使用命名参数进行传参,否则将被认为是一个比较的元素
Traceback (most recent call last):
 File "<pyshell#27>", line 1, in <module>
  max((),0)
TypeError: unorderable types: int() > tuple()

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

Python 相关文章推荐
Python实现的生成自我描述脚本分享(很有意思的程序)
Jul 18 Python
python僵尸进程产生的原因
Jul 21 Python
python2.7+selenium2实现淘宝滑块自动认证功能
Feb 24 Python
Python机器学习k-近邻算法(K Nearest Neighbor)实例详解
Jun 25 Python
Flask框架使用DBUtils模块连接数据库操作示例
Jul 20 Python
在pycharm中显示python画的图方法
Aug 31 Python
python如何求数组连续最大和的示例代码
Feb 04 Python
Python面向对象中类(class)的简单理解与用法分析
Feb 21 Python
Python多线程操作之互斥锁、递归锁、信号量、事件实例详解
Mar 24 Python
Django windows使用Apache实现部署流程解析
Oct 12 Python
Python+OpenCV检测灯光亮点的实现方法
Nov 02 Python
Python非单向递归函数如何返回全部结果
Dec 18 Python
Python中的日期时间处理详解
Nov 17 #Python
Eclipse和PyDev搭建完美Python开发环境教程(Windows篇)
Nov 16 #Python
Python进阶篇之字典操作总结
Nov 16 #Python
Python极简代码实现杨辉三角示例代码
Nov 15 #Python
Python实现将不规范的英文名字首字母大写
Nov 15 #Python
利用Python开发实现简单的记事本
Nov 15 #Python
Python解析excel文件存入sqlite数据库的方法
Nov 15 #Python
You might like
使PHP自定义函数返回多个值
2006/11/26 PHP
ThinkPHP访问不存在的模块跳转到404页面的方法
2014/06/19 PHP
百万级别知乎用户数据抓取与分析之PHP开发
2015/09/28 PHP
PHP实现基于3DES算法加密解密字符串示例
2018/08/24 PHP
用tip解决Ext列宽度不够的问题
2008/12/13 Javascript
JavaScript Event学习第五章 高级事件注册模型
2010/02/07 Javascript
struts2+jquery组合验证注册用户是否存在
2014/04/30 Javascript
元素未显示设置width/height时IE中使用currentStyle获取为auto
2014/05/04 Javascript
js判断浏览器类型为ie6时不执行
2014/06/15 Javascript
浅谈页面装载js及性能分析方法
2014/12/09 Javascript
jQuery中:contains选择器用法实例
2014/12/30 Javascript
jQuery实现防止提交按钮被双击的方法
2015/03/24 Javascript
JavaScript重定向URL参数的两种方法小结
2016/10/19 Javascript
jQuery+HTML5实现弹出创意搜索框层
2016/12/29 Javascript
通过命令行创建vue项目的方法
2017/07/20 Javascript
浅谈React中组件间抽象
2018/01/27 Javascript
vue2.0在没有dev-server.js下的本地数据配置方法
2018/02/23 Javascript
详解NodeJs开发微信公众号
2018/05/25 NodeJs
Vue项目中使用WebUploader实现文件上传的方法
2019/07/21 Javascript
[52:14]VG vs Serenity 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/20 DOTA
在Python中使用lambda高效操作列表的教程
2015/04/24 Python
Python列表切片用法示例
2017/04/19 Python
关于Python 3中print函数的换行详解
2017/08/08 Python
在python下读取并展示raw格式的图片实例
2019/01/24 Python
Python爬取智联招聘数据分析师岗位相关信息的方法
2019/08/13 Python
Python利用pip安装tar.gz格式的离线资源包
2020/09/14 Python
Nike加拿大官网:Nike.com (CA)
2019/04/09 全球购物
.net面试题
2016/09/17 面试题
考试作弊被抓检讨书
2014/01/10 职场文书
大学生开西餐厅创业计划书
2014/02/01 职场文书
学校交通安全责任书
2014/08/25 职场文书
2014年最新个人对照检查材料范文
2014/09/25 职场文书
财务部会计岗位职责
2015/02/03 职场文书
就业导师推荐信范文
2015/03/27 职场文书
使用Golang的channel交叉打印两个数组的操作
2021/04/29 Golang
win server2012 r2服务器共享文件夹如何设置
2022/06/21 Servers