Python min()函数

原文: https://thepythonguru.com/python-builtin-functions/min/


于 2020 年 1 月 7 日更新


min()函数返回最小的输入值。

其语法如下:

  1. min(iterable[, default=obj, key=func]) -> value
参数 描述
iterable(必填) 可迭代对象,例如字符串,列表,元组等。
default(可选) 如果可迭代对象为空,则返回默认值。
key(可选) 它引用单个参数函数以自定义排序顺序。 该函数应用于迭代器上的每个项目。

要么

  1. min(a, b, c, ...[, key=func]) -> value
参数 描述
a, b, c ... 比较项目
key(可选) 它引用单个参数函数以自定义排序顺序。 该函数适用​​于每个项目。

如果以可迭代方式调用min(),它将返回其中的最小项。 如果可迭代对象为空,则返回default值(假设已提供),否则引发ValueError异常。

如果使用多个参数调用min(),它将返回最小的参数。

让我们看一些例子:

示例 1 :以可迭代方式调用min()

  1. >>>
  2. >>> min("abcDEF") # find smallest item in the string
  3. 'D'
  4. >>>
  5. >>>
  6. >>> min([2, -1, 4, 3]) # find smallest item in the list
  7. -1
  8. >>>
  9. >>>
  10. >>> min(("one", "two", "three")) # find smallest item in the tuple
  11. 'one'
  12. >>>
  13. >>>
  14. >>> min({1: "one", 2: "two", 3: "three"}) # find smallest item in the dict
  15. 1
  16. >>>
  17. >>>
  18. >>> min([]) # empty iterable causes ValueError
  19. Traceback (most recent call last):
  20. File "<stdin>", line 1, in <module>
  21. ValueError: min() arg is an empty sequence
  22. >>>
  23. >>>
  24. >>> min([], default=0) # supressing the error with default value
  25. 0
  26. >>>

试试看:

  1. # find smallest item in the string
  2. print(min("abcDEF"))
  3. # find smallest item in the list
  4. print(min([2, -1, 4, 3]))
  5. # find smallest item in the tuple
  6. print(min(("one", "two", "three")))
  7. # find smallest item in the dict
  8. print(min({1: "one", 2: "two", 3: "three"}))
  9. #print(min([])) # empty iterable causes ValueError
  10. # supressing the error with default value
  11. print(min([], default=0))

示例 2 :使用多个参数调用min()

  1. >>>
  2. >>> min(20, 10, 30, -5)
  3. -5
  4. >>>
  5. >>>
  6. >>> min("c", "b", "a", "Y", "Z")
  7. 'Y'
  8. >>>
  9. >>>
  10. >>> min(3.14, -9.91, 2.41)
  11. -9.91
  12. >>>

试一试:

  1. print(min(20, 10, 30, -5))
  2. print(min("c", "b", "a", "Y", "Z"))
  3. print(min(3.14, -9.91, 2.41))

试图在不同类型的对象中找到最大值会导致错误。

  1. >>>
  2. >>> min(10, "pypi")
  3. Traceback (most recent call last):
  4. File "<stdin>", line 1, in <module>
  5. TypeError: unorderable types: str() > int()
  6. >>>
  7. >>>
  8. >>> min(5, [-10, 55])
  9. Traceback (most recent call last):
  10. File "<stdin>", line 1, in <module>
  11. TypeError: unorderable types: list() > int()
  12. >>>

自定义排序顺序


为了自定义排序顺序,我们使用key命名参数。 它的工作原理类似于sorted()函数的key命名参数。

这是一个使用键参数使字符串比较区分大小写的示例。

  1. >>>
  2. >>> min("c", "b", "a", "Y", "Z")
  3. 'Y'
  4. >>>
  5. >>> min("c", "b", "a", "Y", "Z", key=str.lower)
  6. 'a'
  7. >>>

试一试:

  1. print(min("c", "b", "a", "Y", "Z"))
  2. print(min("c", "b", "a", "Y", "Z", key=str.lower))

以下是另一个示例,其中我们根据字符串的长度而不是其 ASCII 值比较字符串。

  1. >>>
  2. >>> min(("java", "python", "z++"))
  3. 'java'
  4. >>>
  5. >>> min(("java", "python", "z++"), key=len)
  6. 'z++'
  7. >>>

试一试:

  1. print(min(("java", "python", "z++")))
  2. print(min(("java", "python", "z++"), key=len))

还存在一个互补函数,称为max(),可找到最大的输入值。