max()是 Python 中的一个内置函数,用于返回可迭代对象中的最大值或多个参数中的最大值。

函数语法

max()函数存在两种形式;

1. 接受可迭代对象

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

参数:

  • iterable:一个可迭代对象,例如列表、元组或集合等;
  • key:可选参数,指定一个函数作为比较键,默认为None
  • default:可选参数,当iterable为空时返回的默认值;

2. 接受多个独立参数

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

参数:

  • arg1arg2*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