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:'>'不支持。早先它使用整数元素,因为它们支持>和<运算符。