作者选择了 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 过滤器函数。