首页 >后端开发 >Python教程 >Python 的'any”和'all”函数如何工作,为什么我的元组比较失败?

Python 的'any”和'all”函数如何工作,为什么我的元组比较失败?

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-12-11 04:35:131019浏览

How Do Python's `any` and `all` Functions Work, and Why Did My Comparison of Tuples Fail?

理解Python的any和所有函数的行为

Python的any和all提供了方便的方法来评估可迭代中多个元素的真实性。如果任何元素为 True,则 any 返回 True,而仅当所有元素为 True 时,all 才返回 True。

any 与 all

直观上,any 可以可视化为一系列逻辑 OR 运算符 (||),以及全部作为一系列逻辑 AND 运算符 (&&)。这种理解有助于阐明它们的功能:

  • 任意: 至少有一个 Truthy 元素会产生 True 返回值。空的迭代计算结果为 False。
  • all: 仅当所有元素均为 Truthy 时,所有元素都返回 True。同样,空的迭代结果为 True。

短路

所有的一个重要方面是它们的短路行为。他们按顺序评估元素,直到确定结果。这种优化可以防止对整个迭代进行不必要的遍历。

给定示例中的应用

在提供的示例中,我们的目标是比较元组以确定是否有任何值不同,并且在这种情况下打印 True。预期输出应为 [False, True, False]。然而实际得到的结果是[False,False,False]。这种差异是由所使用的表达式引起的:

[any(x) and not all(x) for x in zip(*d['Drd2'])]

仅当元组中至少有一个元素为 True 但并非所有元素均为 True 时,方括号内的表达式才计算为 True。在提供的情况下,没有任何元组包含此类值。因此,结果是错误的 [False, False, False]。

正确实现

要实现预期的行为,可以使用以下表达式:

[x[0] != x[1] for x in zip(*d['Drd2'])]

该表达式直接比较每个元组的第一个和第二个元素,如果不同则返回 True。结果,将获得所需的输出 [False, True, False]。

以上是Python 的'any”和'all”函数如何工作,为什么我的元组比较失败?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn