作者选择了 COVID-19 救援基金作为 Write for Donations计划的一部分接受捐款。
介绍
Python 包含一系列 内置函数 - 这些是全球的 Python 函数,可以从任何 Python 代码中调用,而不需要导入额外的模块。
多個內建函數(「所有」、「任何」、「最大」和「小」之間)將值的 _iterables 作為他們的論點,並返回一個單一值。 iterable 是一個 Python 對象,它可以被「重複」,也就是說,它會以序列返回項目,以便您可以在「為」循環中使用它。
在本教程中,您将使用内置的函数all
,any
,max
和min
。
前提条件
为了充分利用本教程,建议你:
您可以查看我们的 如何在Python中编码 3教程系列以获得背景知识
- Python 互动控制台,如果您想尝试本教程中的示例代码,您可以使用 如何使用 Python 互动控制台教程 )。
使用全部
内置的所有
函数检查可重复元素中的每个元素是否为True
。
1all([True, True])
如果您运行以前的代码,您将收到以下输出:
1[secondary_label Output]
2True
在这个第一个示例中,你称呼所有
,并给它一个包含两个元素的列表(两个真
布尔值)。
All
将返回False
,如果给定 iterable 中的一个或多个元素是False
:
1all([True, False, True])
如果您运行以前的代码,您将收到此输出:
1[secondary_label Output]
2False
您呼叫所有
,列表包含三个元素,其中包括一个假
布尔值. 由于 iterable 中的一个元素是假
,所以呼叫所有
的输出是假
。
值得注意的是,所有
停止迭代并立即返回虚假
,一旦它在可迭代中遇到第一个虚假
条目,因此,所有
可以是有用的,如果你想检查可能相互依赖的连续条件,但一旦一个条件是虚假
,就立即返回。
需要注意的一个特殊情况是,当所有
被赋予一个空的迭代:
1all([])
如果您运行以前的代码,您将收到此输出:
1[secondary_label Output]
2True
当您给所有
一个空的迭代(例如,一个空的列表,如all([])
),其返回值为True
。
所有
在与发电机和自定义条件相结合时特别有用。使用所有
通常比写一个完整的为
循环更短、更简洁。
1animals = ["shark", "seal", "sea urchin"]
2all(a.startswith("s") for a in animals)
如果您运行以前的代码,您将收到以下输出:
1[secondary_label Output]
2True
发电机为动物
列表中的每个元素生成一个布尔文,基于动物是否以字母s
开始。
例如,考虑all(i < 8 for i in range(3))
和all(i < 8 for i in range(3))
)两个陈述都返回
True,因为0、1、2都小于8个。第二个例子(使用列表理解),然而,增加了暗示地创建一个列表的三条长条(‘True, True, True’),然后将该列表传递到
all’函数。
考虑一下,用一个完整的for
循环写的等效代码会更有说法:
1animals = ["shark", "seal", "sea urchin"]
2
3def all_animals_start_with_s(animals):
4 for a in animals:
5 if not a.startswith("s"):
6 return False
7 return True
8
9print(all_animals_start_with_s(animals))
没有全部
,确定所有动物是否以字母s
开始的代码需要执行几行。
接下来,您将查看所有
的兄弟函数:任何
。
使用任何
您可以使用内置函数任何
来检查可重复元素中的任何元素是否为真
。
1any([False, True])
如果您运行以前的代码,您将收到此输出:
1[secondary_label Output]
2True
你叫任何
,并给它一个包含两个元素的列表(一个假
布尔值和一个真
布尔值)。
任何
将返回假
,如果,而且只有如果,给定的迭代元素中的 0 个元素是真
:
1all([False, False, False])
如果您运行以前的代码,您将收到此输出:
1[secondary_label Output]
2False
您呼叫任何
的列表中包含三个元素(所有假
布尔值)。 由于 iterable 中的 0 个元素是真
,所以呼叫任何
的输出是假
。
值得注意的是,任何
停止迭代并立即返回真
,一旦它在迭代中遇到第一个真
条目,因此,如果您想要检查连续条件,则任何
可能有用,但一旦一个条件是真
,就立即返回。
任何
- 就像其兄弟方法所有
一样 - 特别有用,当与发电机和自定义条件相结合时(而不是完整的为
循环)。
1animals = ["shark", "seal", "sea urchin"]
2any(s.endswith("urchin") for s in animals)
您将收到此输出:
1[secondary_label Output]
2True
发电机会为动物
列表中的每个元素生成一个布尔文,根据动物是否以urchin
结束,最后的返回值是True
,因为动物
列表中的一个元素以urchin
结束。
<$>[注]
**注:**当给出任何
一个空的迭代值(例如,一个空的列表,如任何([])
)时,其返回值为假
。
接下来,你会检查另一个内置的函数:max
。
使用max
内置函数max
返回其参数中给出的最大元素,例如:
1max([0, 8, 3, 1])
max
是以四个整数为参数的列表,而 max
的返回值是该列表中最大的元素: 8
。
产出将如下:
1[secondary_label Output]
28
如果给出了两个或多个位置参数(而不是一个可重复的位置参数),则max
返回给出的参数中最大的参数:
1max(1, -1, 3)
如果您运行以前的代码,您将收到以下输出:
1[secondary_label Output]
23
max
给出了三个个别参数,其中最大的参数为 3
,因此,呼叫到 max
的返回值为 3
。
就像任何
和所有
一样,max
特别有用,因为它需要使用的行少于写成完整的for
循环的等效代码。
max
也可以处理比数字更复杂的对象,例如,您可以在程序中使用max
与字典或其他自定义对象。
您可以使用关键字
参数来定义定制函数,该函数确定比较中使用的值,以确定最大值。
1entries = [{"id": 9}, {"id": 17}, {"id": 4}]
2max(entries, key=lambda x: x["id"])
产出将如下:
1[secondary_label Output]
2{'id': 17}
您将max
号称为字典列表的输入,您将一个匿名lambda
函数作为关键词
参数。max
号称lambda
函数为entries
列表中的每个元素,并返回该元素的id
密钥的值。
請注意,當「max」被稱為空的重複性時,它拒絕運作,而是提出了「ValueError」:
1max([])
如果您运行此代码,您将收到以下输出:
1[secondary_label Output]
2Traceback (most recent call last):
3 File "max.py", line 1, in <module>
4 max([])
5ValueError: max() arg is an empty sequence
您将空列表中的max
称为其参数,而max
不接受此作为有效的输入,而是提出了ValueError
例外。
max
有一个名为min
的对象,您将在下一步审查。
使用min
内置函数min
返回其参数中给出的最小元素,例如:
1min([8, 0, 3, 1])
您给min
一个包含四个整数的列表,而min
的返回值是该列表中最小的元素:0
。
产量将是:
1[secondary_label Output]
20
如果给出了两个或多个定位参数(而不是一个可重复的单个定位参数),‘min’返回给出的参数中最小的参数:
1min(1, -1, 3)
如果您运行以前的代码,您将收到以下输出:
1[secondary_label Output]
2-1
你给min
三个个别参数,其中最小的为-1
。
像max
一样,min
支持名为key
的关键字参数,以便您可以将比数字更复杂的对象传入其中。
您可以使用关键字
参数来定义定制函数,该函数确定比较中使用的值,以确定最低值。
1entries = [{"id": 9}, {"id": 17}, {"id": 4}]
2min(entries, key=lambda x: x["id"])
1[secondary_label Output]
2{'id': 4}
你用字典列表来调用min
作为输入,你将一个匿名的lambda
函数作为关键词
参数。min
将lambda
函数调用给entries
列表中的每个元素,并返回给定元素的id
密钥的值。
就像「max」一樣,當你用空的重複式呼叫「min」時,它拒絕運作,而是提出了「ValueError」:
1min([])
如果您运行以前的代码,您将收到以下输出:
1[secondary_label Output]
2Traceback (most recent call last):
3 File "min.py", line 1, in <module>
4 min([])
5ValueError: min() arg is an empty sequence
您将空列表中的min
称为其参数,而min
不接受此作为有效输入,而是提出了ValueError
例外。
结论
在本教程中,您使用了Python内置函数all
,any
,max
和min
,您可以了解更多有关函数all
,any
,max
和min
以及其他Python内置函数(在Python文件中)。
有关其他 Python 内置的更多信息,您还可以参阅 内置的 Python 3 函数以使用数字, 如何使用 Python 地图函数和 如何使用 Python 过滤器函数。