Python 的任何和所有函数如何工作
比较元组时,any() 和 all() 内置函数都会进入玩。它们的区别如下:
any()
any() 如果迭代中至少有一个元素为 Truthy(即不是 False、0、 '',等等)。
all()
all(),另一方面,仅当可迭代中的每个元素都是 Truthy 时才返回 True。
理解用例
在代码片段中提供:
print [any(x) and not all(x) for x in zip(*d['Drd2'])]
zip(*d['Drd2']) 中的每个元组都在any(x) 而不是all(x) 的上下文中进行评估。然而,意外的 [False, False, False] 输出引发了问题。
错误解释
根据任何和全部的真值表:
any(x) | all(x) | any(x) and not all(x) |
---|---|---|
True | False | True |
False | True | False |
True | True | False |
False | False | False |
在这种情况下,所有元组都由相同的数字(即 True 值)组成,因此 any(x) 始终是True,并且 all(x) 也将为 True。因此,any(x) 而不是 all(x) 应始终评估为 False,这不会反映在输出中。
错误原因
错误所在错误地期望 (x[0] != x[1]) 是一个 Truthy 表达式。但是,当元组中的数字相等时(例如 (1, 1)),(x[0] != x[1]) 的计算结果为 False。
正确逻辑
要准确确定元组中的任何值是否不同,您可以使用以下命令逻辑:
print [x[0] != x[1] for x in zip(*d['Drd2'])]
此表达式按预期正确比较每个元组的相应元素以识别任何差异。
以上是Python 的 `any()` 和 `all()` 函数在比较元组时如何表现?的详细内容。更多信息请关注PHP中文网其他相关文章!