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实现分析apache和nginx日志文件并输出访客ip列表的方法
Apr 04 Python
python基础教程之五种数据类型详解
Jan 12 Python
JSON Web Tokens的实现原理
Apr 02 Python
Python实现1-9数组形成的结果为100的所有运算式的示例
Nov 03 Python
浅析Python装饰器以及装饰器模式
May 28 Python
详解Python 装饰器执行顺序迷思
Aug 08 Python
为何人工智能(AI)首选Python?读完这篇文章你就知道了(推荐)
Apr 06 Python
python里运用私有属性和方法总结
Jul 08 Python
python实现桌面气泡提示功能
Jul 29 Python
python matplotlib库绘制条形图练习题
Aug 10 Python
Python网络爬虫四大选择器用法原理总结
Jun 01 Python
Python 字符串池化的前提
Jul 03 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开发API接口签名生成及验证操作示例
2020/05/27 PHP
PHP后门隐藏的一些技巧总结
2020/11/04 PHP
JavaScript网页制作特殊效果用随机数
2007/05/22 Javascript
SharePoint 客户端对象模型 (一) ECMA Script
2011/05/22 Javascript
cookie 最近浏览记录(中文escape转码)具体实现
2013/06/08 Javascript
用jquery写的菜单从左往右滑动出现
2014/04/11 Javascript
jQuery中extend函数的实现原理详解
2015/02/03 Javascript
js+html5实现canvas绘制简单矩形的方法
2015/06/05 Javascript
理解javascript中的with关键字
2016/02/15 Javascript
纯javascript版日历控件
2016/11/24 Javascript
vue+vuecli+webpack中使用mockjs模拟后端数据的示例
2017/10/24 Javascript
浅谈Angular文字折叠展开组件的原理分析
2017/11/24 Javascript
Javascript实现运算符重载详解
2018/04/07 Javascript
简单的React SSR服务器渲染实现
2018/12/11 Javascript
如何为你的JavaScript代码日志着色详解
2019/04/08 Javascript
JS实现页面跳转与刷新的方法汇总
2019/08/30 Javascript
javascript 模块依赖管理的本质深入详解
2020/04/30 Javascript
Jquery $.map使用方法实例详解
2020/09/01 jQuery
Vue3.0的优化总结
2020/10/16 Javascript
[54:18]DOTA2-DPC中国联赛 正赛 PSG.LGD vs LBZS BO3 第一场 1月22日
2021/03/11 DOTA
Python实现配置文件备份的方法
2015/07/30 Python
Python常用的爬虫技巧总结
2016/03/28 Python
在CMD命令行中运行python脚本的方法
2018/05/12 Python
Python Django框架单元测试之文件上传测试示例
2019/05/17 Python
python爬取百度贴吧前1000页内容(requests库面向对象思想实现)
2019/08/10 Python
python数据爬下来保存的位置
2020/02/17 Python
如何在Python对Excel进行读取
2020/06/04 Python
python实现测试工具(二)——简单的ui测试工具
2020/10/19 Python
ColourPop美国官网:卡拉泡泡,洛杉矶彩妆品牌
2019/04/28 全球购物
计算机专业毕业生自荐信
2013/12/31 职场文书
机房搬迁方案
2014/05/01 职场文书
大学生求职信
2014/06/17 职场文书
检讨书模板大全
2015/05/07 职场文书
微信小程序实现录音Record功能
2021/05/09 Javascript
Java 死锁解决方案
2022/05/11 Java/Android
Android Gradle 插件自定义Plugin实现注意事项
2022/06/16 Java/Android