知识点1
在 Python 中,min() 和 max() 是两个非常实用的内置函数,分别用于找出可迭代对象中的最小值和最大值。
基本语法
min(iterable, *[, key, default])
min(arg1, arg2, *args, *[, key])
-
iterable
:可迭代对象,如列表list、元组tuple、字典dict、集合set等。 -
arg1, arg2, *args
:多个参数,直接传入多个值进行比较。 -
key
:可选参数,用于指定一个函数,该函数会在比较之前对每个元素进行处理。默认为 None,即直接比较元素本身。 -
default
:可选参数,仅当 iterable 为空时返回默认值。如果未指定且 iterable为空,则会抛出 ValueError。
案例1
min() 函数在处理列表时,会逐个比较元素,找出最小值并返回。在代码中,列表 num中的最小值是1,因此输出结果为1。
案例2
min() 函数可以直接接收多个参数,并逐个比较这些参数,找出最小值并返回。在代码中,这些参数中的最小值是 1,因此输出结果为 1
案例3
解释
-
min()
函数的作用:-
min() 函数不仅可以从单个可迭代对象(如列表、元组等)中找出最小值,还可以直接比较多个可迭代对象,找出其中的“最小”对象。
-
-
参数传递:
-
在这个例子中,min() 函数接收了三个参数,每个参数都是一个列表:
-
[1, 2, 3]
-
[4, 5, 6]
-
[7, 8, 9]
-
-
-
比较过程:
-
当比较多个列表时,min() 函数会从左到右逐个比较这些列表的元素,直到找到不同的元素为止。
-
具体比较过程如下:
-
比较第一个元素:
-
[1, 2, 3] 的第一个元素是1
-
[4, 5, 6]的第一个元素是4
-
[7, 8, 9] 的第一个元素是7
-
因为1 < 4 < 7,所以 [1, 2, 3] 是最小的列表。
-
-
由于第一个元素已经决定了结果,后续元素不再需要比较。
-
-
-
输出结果:
-
min([1, 2, 3], [4, 5, 6], [7, 8, 9]) 返回这些列表中的“最小”列表 [1, 2, 3],因此输出结果为 [1, 2, 3]。
-
案例4
代码1
print(min([2, 1, 3], [1, 2, 3], [3, 2, 1])) # 输出结果:[1, 2, 3]
解释1
-
min()
函数的作用:-
min() 函数用于从多个可迭代对象(如列表、元组等)中找出“最小”的对象。
-
-
参数传递:
-
在这个例子中,min()函数接收了三个参数,每个参数都是一个列表:
-
[2, 1, 3]
-
[1, 2, 3]
-
[3, 2, 1]
-
-
-
比较过程:
-
当比较多个列表时,min() 函数会从左到右逐个比较这些列表的元素,直到找到不同的元素为止。
-
具体比较过程如下:
-
比较第一个元素:
-
[2, 1, 3] 的第一个元素是2
-
[1, 2, 3] 的第一个元素是 1
-
[3, 2, 1] 的第一个元素是 3
-
因为1 < 2 < 3,所以 [1, 2, 3] 是最小的列表。
-
-
由于第一个元素已经决定了结果,后续元素不再需要比较。
-
-
-
输出结果:
-
min([2, 1, 3], [1, 2, 3], [3, 2, 1]) 返回这些列表中的“最小”列表 [1, 2, 3],因此输出结果为 [1, 2, 3]。
-
代码2
print(min([2, 1, 3], [1, 2, 3], [3, 2, 1], key=len)) # 输出结果:[2, 1, 3]
解释2
-
key
参数的作用:-
key 参数用于指定一个函数,该函数会在比较之前对每个元素进行处理。
-
在这个例子中,key=len 表示比较这些列表的长度。
-
-
参数传递:
-
min() 函数接收了三个参数,每个参数都是一个列表:
-
[2, 1, 3]
-
[1, 2, 3]
-
[3, 2, 1]
-
-
-
比较过程:
-
使用 key=len,比较这些列表的长度:
-
[2, 1, 3] 的长度是3
-
[1, 2, 3] 的长度是3
-
[3, 2, 1] 的长度是3
-
-
因为所有列表的长度都相同,所以min() 函数会返回第一个列表。
-
-
输出结果:
-
min([2, 1, 3], [1, 2, 3], [3, 2, 1], key=len) 返回这些列表中的第一个列表[2, 1, 3],因此输出结果为[2, 1, 3]。
-
总结
-
在没有指定 key 参数时,min() 函数会从左到右逐个比较列表的元素,直到找到不同的元素为止。
-
在指定 key 参数时,min() 函数会先对每个列表应用 key 函数,然后比较结果,如果结果相同,则返回第一个列表。