在Python的七十多个内置函数中,max()和min()是比较常用的两个,用来查找一组数据中的最大值和最小值。这两个函数看似简单,实则暗藏了很多意想不到的功能,尤其是key参数,更为这两个函数增加了类似map()函数的功能。如果应用在代码中,必定产生鬼斧神工、匪夷所思的感觉,令人叹为观止!

<>1. 典型应用场景

这是max()和min()函数最常见的应用场景:从多个数值型参数中返回最大/最小值,或者返回数值型列表中的最大/最小值。这里说的数值型,是指整型和浮点型。
>>> max(1,3,5,7) # 返回多个数值型参数中的最大值 7 >>> min([2,4,6,8]) # 返回数值型列表中的最小值 2
<>2. 比较字符串

输入参数或列表元素的类型,除了数值型,还可以是字符串,但不能数值型和字符串型的混合。两个字符串比较大小的规则是从首字符开始比较其字符的ASCII码值,若相等,则比较后一位字符,直至分出大小。
>>> max(['a','b','c']) # 返回列表中最大的字符串 'c' >>> min('2020-06-23 12:00:00',
'2020-06-23 11:50:00') # 返回最早的日期时间字符串 '2020-06-23 11:50:00' >>> max('1', '9',
'10', '100') # 返回多个字符串中最大的字符串 '9' >>> min('1', '9', '10', '100') #
返回多个字符串中最小的字符串 '1'
<>3. 比较列表或元组

除了数值型、字符串型,max()和min()函数还可以用于比较列表或元组的大小:顺序比较各元素,直至分出大小。当然,用来比较的元素必须是同一种类型,要么都是数值型,要么都是字符串型。
>>> max([8,4],[6,8]) # 返回多个列表中最大的列表 [8, 4] >>> max([8,4],[8,4,2]) #
返回多个列表中最大的列表 [8, 4, 2] >>> min(['8',4],['8',4,'2']) # 返回多个列表中最小的列表 ['8', 4] >>>
min(('8',4, '3'),('8',4,'2')) # 返回多个元组中最小的元组 ('8', 4, '2')
<>4. 找出字典、字符串、迭代器中的最大最小值

max()和min()函数不仅能比较列表或元组的元素的大小,也能从集合、字典、字符串、range对象、迭代器等对象中找出最大和最小的元素。
>>> max({3,4,5,6}) # 返回集合中的最大值 6 >>> min({'x':5, 'y':7, 'z':3}) #
返回字典元素中的最小值,结果是最小的键 'x' >>> max("I'm xufive.") # 返回字符串中的最大字符(有点意外吧?) 'x' >>> min
("I'm xufive.") # 返回字符串中的最小字符 ' ' >>> max(range(5)) # range()函数返回一个range对象 4 >>>
max(map(abs, [-1,2,-3])) # map()函数返回一个迭代器 3
<>5. 使用key参数

我们注意到,使用max()和min()函数返回字典的最大/最小值,实际得到的是字典的键的最大/最小值。那么如何得到字典的值的最大/最小值呢?很简单,使用max()和min()函数的key参数。不过,需要提醒的是,使用key参数,返回的是字典中最大/最小值的键,而不是最大/最小值。
>>> d = {'x':5, 'y':7, 'z':3} >>>> min(d) # 返回字典中最小的键 'x' >>> min(d, key=lambda
x:d[x]) # 返回字典中最小值的键,而非最小值 'z' >>> max(d) # 返回字典中最大的键 'z' >>> max(d, key=lambda
x:d[x]) # 返回字典中最大值的键,而非最大值 'y'
<>6. 综合练习

最后,我们来做两道练习题,看看max()和min()函数的威力有多大。这两个问题并不难,初学者也能轻松给出答案,但是,要想写得优雅漂亮,非max()和min()函数不可。

* 列表 [1,3,5,7,9,11,13,15,17]中,哪一个元素的正弦值最小?
* 列表 [8,5,2,4,3,6,5,5,1,4,5] 中,哪一个元素出现的频率最高?
问题1的参考答案:
>>> import math >>> a = [1,3,5,7,9,11,13,15,17] >>> min(a, key=math.sin) 11 >>>
math.sin(11) # 元素11的正弦值最小 -0.9999902065507035
问题2的参考答案:
>>> a = [8,5,2,4,3,6,5,5,1,4,5] >>> max(set(a), key=a.count) 5 >>> a.count(5)
# 元素5出现了4次,次数最多 4

技术
©2019-2020 Toolsou All rights reserved,
Qt学习2——.pro文件和.h文件介绍LinkedHashMap基本用法&使用实现简单缓存pytorch之ResNet18(对cifar10数据进行分类准确度达到94%)华为Mate 40 Pro+ 5G曝光:徕卡电影镜头、陶瓷机身统计字母个数(java语言实现)JavaScript中的 Call 和 Apply1190 反转每对括号间的子串 leetcode记一次EventBus内存泄露导致的项目问题浅谈uni-app页面传值问题 Chrome OS,对程序员和Windows意味着什么?,互联网营销