如何在 Python 中使用 all、any、max 和 min 函数

作者选择了 COVID-19 救援基金作为 Write for Donations计划的一部分接受捐款。

介绍

Python 包含一系列 内置函数 - 这些是全球的 Python 函数,可以从任何 Python 代码中调用,而不需要导入额外的模块。

多個內建函數(「所有」、「任何」、「最大」和「小」之間)將值的 _iterables 作為他們的論點,並返回一個單一值。 iterable 是一個 Python 對象,它可以被「重複」,也就是說,它會以序列返回項目,以便您可以在「為」循環中使用它。

在本教程中,您将使用内置的函数all,any,maxmin

前提条件

为了充分利用本教程,建议你:

您可以查看我们的 如何在Python中编码 3教程系列以获得背景知识

使用全部

内置的所有函数检查可重复元素中的每个元素是否为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函数作为关键词参数。minlambda函数调用给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,maxmin,您可以了解更多有关函数all,any,maxmin以及其他Python内置函数(在Python文件中)。

有关其他 Python 内置的更多信息,您还可以参阅 内置的 Python 3 函数以使用数字, 如何使用 Python 地图函数如何使用 Python 过滤器函数

Published At
Categories with 技术
Tagged with
comments powered by Disqus