说明
《Python 教程》 持续更新中,提供建议、纠错、催更等加作者微信: gr99123(备注:pandas教程)和关注公众号「盖若」ID: gairuo。跟作者学习,请进入 Python学习课程。欢迎关注作者出版的书籍:《深入浅出Pandas》 和 《Python之光》。
Python 的内置函数 max() 可传入一个可迭代对象 或者多个元素作为参数,返回这个它们中的最大元素。同样,min() 可得到最小值。内置函数 min() 与 max() 的逻辑相同,区别仅为返回最小的项,本文将以 max() 为例进行介绍。
以下是一些使用案例:
max(1,2,3) # 3
max('123') # '3'
max('1, 2, 3') # '3'
max('abc') # 'c'
d = {'a': 3, 'b': 2, 'c': 1}
max(d) # 'c'
max(d.items()) # ('c', 1)
max(d, key=lambda k: d[k]) # 'a'
max([22, 2], [42, 1]) # [42, 1]
max([(1,5),(2,4),(3,3)]) # (3, 3)
max([(1,5),(2,4),(3,3)], key=lambda x: x[1])
# (1, 5)
max([*range(2)], [*range(7)])
# [0, 1, 2, 3, 4, 5, 6]
max(0, True, -1) # True, True 为 1
max(range(10)) # 9
max([], default=10) # 10
max() 返回可迭代对象中最大的元素,或者返回两个及以上实参中最大的。它有两种使用方法:
max(iterable, *[, default=obj, key=func]) -> value
max(arg1, arg2, *args, *[, key=func]) -> value
非数字类型如果判断大小,可以参考 sorted() 中的排序原理。
我们分别针对这两种情况进行介绍:
max(iterable, *[, default=obj, key=func]) -> value
如果只提供了一个位置参数,它必须是非空 iterable,返回可迭代对象中最大的元素;使用单个 iterable 参数,返回其最大项。如果提供的 iterable 为空,则默认的仅关键字参数指定要返回的对象。其中:
*iterables
(可选):任意数量的序列,如果我们传递多个序列,则返回给定所有序列中最大的项如果提供了两个(最少)及以上的位置参数,则返回最大的位置参数。
max(arg1, arg2, *args, *[, key=func]) -> value
这种形式的参数为:
*args
(可选) :任意数量的对象,注意,前边两个参数是必传的max() 函数会在两个或多个对象之间查找最大的项。
key 实参指定排序函数用的参数,如传给 list.sort() 的。default 实参是当可迭代对象为空时返回的值。如果可迭代对象为空,并且没有给 default ,则会触发 ValueError。
如果有多个最大元素,则此函数将返回第一个找到的。这和其他稳定排序工具如 sorted(iterable, key=keyfunc, reverse=True)[0] 和 heapq.nlargest(1, iterable, key=keyfunc) 保持一致。
可参考 sorted() 中关于 key 参数的介绍。
3.4 新版功能: keyword-only 实参 default 。
在 3.8 版更改: key 可以为 None。
见 sorted() 中的排序原理。
class P():
def __init__(self, name, age) -> None:
self.name = name
self.age = age
def __lt__(self, other):
if self.age < other.age:
return True
def __str__(self) -> str:
return f'<{self.name}, {self.age}>'
a = P('tom', 18)
b = P('lily', 19)
print(max(a, b)) # <lily, 19>
print(min(a, b)) # <tom, 18>
更新时间:2022-04-28 11:32:03 标签:python max 最大值 min 最小值