max和min 从list列表字典dict、列表元祖tuple、列表字符串string中提取最大值和最小值def max(*args, key=None): # known special case of max
"""
max(iterable, *[, default=obj, key=func]) -> value
max(arg1, arg2, *args, *[, key=func]) -> value
With a single iterable argument, return its biggest item. The
default keyword-only argument specifies an object to return if
the provided iterable is empty.
With two or more arguments, return the largest argument.
"""
key是怎么工作?
例1:
一个简单的例子,假设您有一个字符串形式的数字列表,但是您希望从中提取最大的字符串数字。lis = ['1', '100', '111', '2']
max(lis)
>>> "2"
在这里,max使用它们的原始值比较项(字符串按字典顺序进行比较,因此输出结果为“2”)
要按整数值来进行,需要使用带简单lambda:# 将字符串转换成int 进行比较
max(lis, key=lambda x:int(x))
>>> '111'
lis = ['1', '100', '111', '2', 2, 2.57]
max(lis, key=lambda x: int(x))
>>> '111'
示例2:将max应用于元组列表。
默认情况下,max将根据第一个索引比较项目。如果第一个索引是相同的,那么它将比较第二个索引。在我的示例中,所有项目都有一个唯一的第一个索引,因此您可以得到以下答案:lis = [(1,'a'), (3,'c'), (4,'e'), (-1,'z')]
max(lis)
>>> (4, 'e')
但是,如果你想用索引1的值来比较每一项呢?简单:使用lambda:max(lis, key = lambda x: x[1])
>>> (-1, 'z')
示例3:将max应用于字典列表。lis = [{"a":5},{"a":8},{"a":4}]
max(lis, key = lambda x: x["a"])
>>> {"a":8}
最后:
同理min和max用法一样