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中使用 Selenium 实现网页截图实例
Jul 18 Python
在Python下使用Txt2Html实现网页过滤代理的教程
Apr 11 Python
Python实现控制台输入密码的方法
May 29 Python
在SAE上部署Python的Django框架的一些问题汇总
May 30 Python
django静态文件加载的方法
May 20 Python
Python实现全排列的打印
Aug 18 Python
python linecache 处理固定格式文本数据的方法
Jan 08 Python
Python OpenCV 调用摄像头并截图保存功能的实现代码
Jul 02 Python
解决Mac下使用python的坑
Aug 13 Python
Python 读取xml数据,cv2裁剪图片实例
Mar 10 Python
详解Python中openpyxl模块基本用法
Feb 23 Python
基于Python实现对比Exce的工具
Apr 07 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
第九节 绑定 [9]
2006/10/09 PHP
php 实现进制相互转换
2016/04/07 PHP
thinkPHP5 tablib标签库自定义方法详解
2017/05/10 PHP
javascript SocialHistory 检查访问者是否访问过某站点
2008/08/02 Javascript
Mootools 1.2 手风琴(Accordion)教程
2009/09/15 Javascript
JQUBar 基于JQUERY的柱状图插件
2010/11/23 Javascript
说说JSON和JSONP 也许你会豁然开朗
2012/09/02 Javascript
javascript动态添加、修改、删除对象的属性与方法详解
2014/01/27 Javascript
javascript 寻找错误方法整理
2014/06/15 Javascript
js漂浮广告实现代码
2015/08/15 Javascript
AngularJS实现一次监听多个值发生的变化
2016/08/31 Javascript
JS针对Array的各种操作汇总
2016/11/29 Javascript
Vue动态控制input的disabled属性的方法
2018/06/26 Javascript
基于vue-router 多级路由redirect 重定向的问题
2018/09/03 Javascript
nodejs中方法和模块用法示例
2018/12/24 NodeJs
在node中使用jwt签发与验证token的方法
2019/04/03 Javascript
微信小程序实现语音识别转文字功能及遇到的坑
2019/08/02 Javascript
利用JS代码自动删除稿件的普通弹幕功能
2019/09/20 Javascript
vue 获取元素额外生成的data-v-xxx操作
2020/09/09 Javascript
深入Python解释器理解Python中的字节码
2015/04/01 Python
浅谈python3.x pool.map()方法的实质
2019/01/16 Python
详解pandas如何去掉、过滤数据集中的某些值或者某些行?
2019/05/15 Python
解决python xx.py文件点击完之后一闪而过的问题
2019/06/24 Python
python写入数据到csv或xlsx文件的3种方法
2019/08/23 Python
Python脚本如何在bilibili中查找弹幕发送者
2020/06/04 Python
CSS3实现淘宝留白的方法
2020/06/05 HTML / CSS
推荐10个HTML5响应式框架
2016/02/25 HTML / CSS
Paul Smith英国官网:英国国宝级时装品牌
2019/03/21 全球购物
离婚协议书范本及离婚须知
2014/10/15 职场文书
防汛工作情况汇报
2014/10/28 职场文书
2014年销售员工作总结
2014/12/01 职场文书
2015纪念九一八事变84周年演讲稿
2015/03/19 职场文书
生死抉择观后感
2015/06/09 职场文书
高中生综合素质评价范文
2015/08/18 职场文书
2019企业文化管理制度范本!
2019/08/06 职场文书
python自动化调用百度api解决验证码
2021/04/13 Python