Python max()
时间:2020-02-23 14:43:00 来源:igfitidea点击:
Python max()函数返回可迭代的最大项或者两个或者多个参数的最大项。
Python max()
Python max()函数语法为:
max(iterable, *[, key, default]) max(arg1, arg2, *args[, key])
如果只有一个参数,则它应该是可迭代的,例如字符串,列表,元组等。
返回可迭代的最大项。如果提供了两个或者更多参数,则将返回最大的参数。
我们可以指定
key
参数来识别最大的项目。
这是一个可选参数,通常在参数是自定义对象时使用。default参数指定一个对象,如果提供的iterable为空,则返回该对象。
如果iterable为空且未提供默认值,则会引发" ValueError"异常。如果找到多个最大元素,则返回第一个元素。
Python max()函数示例
让我们看一下max()函数的一些示例。
带字符串的max()
当max()函数与字符串参数一起使用时,将返回具有最大unicode值的字符。
s = 'abcCba' print(max(s)) print('c' > 'C')
输出:
c True
带元组的max()
tuple_numbers = (1, 2, 3, 4) print(max(tuple_numbers))
输出:4
列表的最大值
list_numbers = [1, 2, 3, -4] print(max(list_numbers))
输出:3
对象的max()
当我们想对自定义对象使用max()函数时,我们必须提供" key"函数参数用于比较对象。
class Data: id = 0 def __init__(self, i): self.id = i def __str__(self): return 'Data[%s]' % self.id def get_data_id(data): return data.id # max() with objects and key argument list_objects = [Data(1), Data(2), Data(-10)] print(max(list_objects, key=get_data_id))
输出:Data [2]
如果我们不提供键函数作为参数,则会出现以下错误。
TypeError: '>' 不支持 between instances of 'Data' and 'Data'
max()具有可迭代的空值和默认值
print(max([], default=20))
输出:20
具有多个参数的max()函数
print(max(1, 2, 3, 4))
输出:4
带有参数和键函数的max()
def str_length(s): return len(s) print(max('a', 'abc', 'ab', key=str_length))
输出:abc
具有多个可迭代项的max()
x1 = [10, 20, 30] x2 = [5, 15, 40, 25] print(max(x1, x2, key=len))
输出:[5,15,40,25]
如果我们不提供键函数作为参数,则输出将为" [10,20,30]"。
这是因为将对可迭代元素的元素进行一对一的比较。
当找到具有较大值的元素时,将返回该元素的可迭代对象。
max()具有多个对象的可迭代
x1 = [Data(10), Data(20), Data(30)] x2 = [Data(5), Data(15), Data(40), Data(25)] max_list = max(x1, x2, key=len) for x in max_list: print(x)
输出:
Data[5] Data[15] Data[40] Data[25]
请注意,对于多个参数,iterables被视为对象。如果我们没有指定键函数,那么在'Data'和'Data'的实例之间会得到错误消息'TypeError:'>'不支持。早先它使用整数元素,因为它们支持>和<;运算符。