max()是 Python 中的一个内置函数,用于返回可迭代对象中的最大值或多个参数中的最大值。
函数语法
max()函数存在两种形式;
1. 接受可迭代对象
max(iterable, *[, key, default])
参数:
iterable:一个可迭代对象,例如列表、元组或集合等;key:可选参数,指定一个函数作为比较键,默认为None;default:可选参数,当iterable为空时返回的默认值;
2. 接受多个独立参数
max(arg1,arg2,*args[,key])
参数:
arg1、arg2、*args:要比较的对象;key:可选参数,指定一个函数作为比较键;
max() 函数示例
下面是一个示例,演示如何使用max()函数获取一个列表中的最大值:
my_list = [3, 7, 1, 9, 2]
maximum = max(my_list)
print(maximum) # 9
比较多个对象的大小:
a = 5
b = 9
c = 3
maximum = max(a, b, c)
print(maximum) # 9
指定key,获取列表中绝对值最大的值:
my_list = [-1, 66, 7 , -99, 3]
# 绝对值最大的数
maximum = max(my_list,key=abs)
print(maximum) # -99
指定key,获取列表中最长的字符串:
words = ['what', 'are', 'you', 'doing']
print(max(words, key=len)) # 'doing'
使用key自定义比较规则:
# 年龄最大的人
people = [
{'name': 'Zhang', 'age': 18},
{'name': 'Li', 'age': 35},
{'name': 'Wang', 'age': 60}
]
oldest = max(people, key=lambda p: p['age'])
print(oldest['name']) # 'Wang'
# 计算离原点最远的坐标
import math
class Point:
def __init__(self, x, y):
self.x = x
self.y = y
def __str__(self):
return f'({self.x},{self.y})'
def distance_from_origin(p):
return math.sqrt(p.x**2 + p.y**2)
points = [Point(1, 2), Point(3, 4), Point(5, 6)]
max_point = max(points, key=distance_from_origin)
print(max_point)
处理空序列时,需要指定default,否则会抛出ValueError异常:
empty = []
print(max(empty)) # ValueError
print(max(empty,default=0)) # 0