# Python `min()`函数
> 原文: [https://thepythonguru.com/python-builtin-functions/min/](https://thepythonguru.com/python-builtin-functions/min/)
* * *
于 2020 年 1 月 7 日更新
* * *
`min()`函数返回最小的输入值。
其语法如下:
```py
min(iterable[, default=obj, key=func]) -> value
```
| 参数 | 描述 |
| --- | --- |
| `iterable`(必填) | 可迭代对象,例如字符串,列表,元组等。 |
| `default`(可选) | 如果可迭代对象为空,则返回默认值。 |
| `key`(可选) | 它引用单个参数函数以自定义排序顺序。 该函数应用于迭代器上的每个项目。 |
要么
```py
min(a, b, c, ...[, key=func]) -> value
```
| 参数 | 描述 |
| --- | --- |
| `a, b, c ...` | 比较项目 |
| `key`(可选) | 它引用单个参数函数以自定义排序顺序。 该函数适用于每个项目。 |
如果以可迭代方式调用`min()`,它将返回其中的最小项。 如果可迭代对象为空,则返回`default`值(假设已提供),否则引发`ValueError`异常。
如果使用多个参数调用`min()`,它将返回最小的参数。
让我们看一些例子:
**示例 1** :以可迭代方式调用`min()`
```py
>>>
>>> min("abcDEF") # find smallest item in the string
'D'
>>>
>>>
>>> min([2, -1, 4, 3]) # find smallest item in the list
-1
>>>
>>>
>>> min(("one", "two", "three")) # find smallest item in the tuple
'one'
>>>
>>>
>>> min({1: "one", 2: "two", 3: "three"}) # find smallest item in the dict
1
>>>
>>>
>>> min([]) # empty iterable causes ValueError
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: min() arg is an empty sequence
>>>
>>>
>>> min([], default=0) # supressing the error with default value
0
>>>
```
试试看:
```py
# find smallest item in the string
print(min("abcDEF"))
# find smallest item in the list
print(min([2, -1, 4, 3]))
# find smallest item in the tuple
print(min(("one", "two", "three")))
# find smallest item in the dict
print(min({1: "one", 2: "two", 3: "three"}))
#print(min([])) # empty iterable causes ValueError
# supressing the error with default value
print(min([], default=0))
```
**示例 2** :使用多个参数调用`min()`
```py
>>>
>>> min(20, 10, 30, -5)
-5
>>>
>>>
>>> min("c", "b", "a", "Y", "Z")
'Y'
>>>
>>>
>>> min(3.14, -9.91, 2.41)
-9.91
>>>
```
试一试:
```py
print(min(20, 10, 30, -5))
print(min("c", "b", "a", "Y", "Z"))
print(min(3.14, -9.91, 2.41))
```
试图在不同类型的对象中找到最大值会导致错误。
```py
>>>
>>> min(10, "pypi")
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: unorderable types: str() > int()
>>>
>>>
>>> min(5, [-10, 55])
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: unorderable types: list() > int()
>>>
```
## 自定义排序顺序
* * *
为了自定义排序顺序,我们使用`key`命名参数。 它的工作原理类似于[`sorted()`](/python-builtin-functions/sorted/)函数的`key`命名参数。
这是一个使用键参数使字符串比较区分大小写的示例。
```py
>>>
>>> min("c", "b", "a", "Y", "Z")
'Y'
>>>
>>> min("c", "b", "a", "Y", "Z", key=str.lower)
'a'
>>>
```
试一试:
```py
print(min("c", "b", "a", "Y", "Z"))
print(min("c", "b", "a", "Y", "Z", key=str.lower))
```
以下是另一个示例,其中我们根据字符串的长度而不是其 ASCII 值比较字符串。
```py
>>>
>>> min(("java", "python", "z++"))
'java'
>>>
>>> min(("java", "python", "z++"), key=len)
'z++'
>>>
```
试一试:
```py
print(min(("java", "python", "z++")))
print(min(("java", "python", "z++"), key=len))
```
还存在一个互补函数,称为[`max()`](/python-builtin-functions/max/),可找到最大的输入值。
* * *
* * *
- 初级 Python
- python 入门
- 安装 Python3
- 运行 python 程序
- 数据类型和变量
- Python 数字
- Python 字符串
- Python 列表
- Python 字典
- Python 元组
- 数据类型转换
- Python 控制语句
- Python 函数
- Python 循环
- Python 数学函数
- Python 生成随机数
- Python 文件处理
- Python 对象和类
- Python 运算符重载
- Python 继承与多态
- Python 异常处理
- Python 模块
- 高级 Python
- Python *args和**kwargs
- Python 生成器
- Python 正则表达式
- 使用 PIP 在 python 中安装包
- Python virtualenv指南
- Python 递归函数
- __name__ == "__main__"是什么?
- Python Lambda 函数
- Python 字符串格式化
- Python 内置函数和方法
- Python abs()函数
- Python bin()函数
- Python id()函数
- Python map()函数
- Python zip()函数
- Python filter()函数
- Python reduce()函数
- Python sorted()函数
- Python enumerate()函数
- Python reversed()函数
- Python range()函数
- Python sum()函数
- Python max()函数
- Python min()函数
- Python eval()函数
- Python len()函数
- Python ord()函数
- Python chr()函数
- Python any()函数
- Python all()函数
- Python globals()函数
- Python locals()函数
- 数据库访问
- 安装 Python MySQLdb
- 连接到数据库
- MySQLdb 获取结果
- 插入行
- 处理错误
- 使用fetchone()和fetchmany()获取记录
- 常见做法
- Python:如何读取和写入文件
- Python:如何读取和写入 CSV 文件
- 用 Python 读写 JSON
- 用 Python 转储对象