理解Python的any和所有函数的行为
Python的any和all提供了方便的方法来评估可迭代中多个元素的真实性。如果任何元素为 True,则 any 返回 True,而仅当所有元素为 True 时,all 才返回 True。
any 与 all
直观上,any 可以可视化为一系列逻辑 OR 运算符 (||),以及全部作为一系列逻辑 AND 运算符 (&&)。这种理解有助于阐明它们的功能:
短路
所有的一个重要方面是它们的短路行为。他们按顺序评估元素,直到确定结果。这种优化可以防止对整个迭代进行不必要的遍历。
给定示例中的应用
在提供的示例中,我们的目标是比较元组以确定是否有任何值不同,并且在这种情况下打印 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中文网其他相关文章!