理解Python的any()和all()函数
Python中的内置函数,any()和all(),play在评估可迭代中值的真实性方面发挥着至关重要的作用。这些函数提供了测试多个条件的简洁有效的方法。
any() 函数
any() 确定可迭代中的任何元素是否为 True。即使存在一个 True 值,它也会返回 True;
示例:
my_list = [0, False, 'Hello', 1, ''] print(any(my_list)) # Outputs True as 'Hello' and 1 are True
all() 函数
all(), on另一方面,检查 iterable 中的每个元素是否为 True。仅当所有元素均为 True 时才返回 True;
示例:
my_list = [True, 1, 'True'] print(all(my_list)) # Outputs True as all elements are True
真实性和逻辑评估
any() 和 all () 本质上分别执行逻辑“或”和“与”运算。了解他们的真实行为至关重要。
真值表:
Iterable Values | any() | all() |
---|---|---|
All True | True | True |
All False | False | False |
Mixed True and False | True | False |
Empty Iterable | False | True |
理解您的代码
在您的代码中,您使用 any() 和 all() 的组合来检查元组中的任何值是否不同,同时确保并非所有值都不同是不同的。然而,由于代码评估中的误解,没有获得您期望的输出:
d = defaultdict(list) print(list(zip(*d['Drd2']))) # [(1, 1), (5, 6), (0, 0)] print([any(x) and not all(x) for x in zip(*d['Drd2'])]) # [False, False, False]
在这种情况下,any(x) 检查元组中是否有任何值不同(即 True),而 all(x) 确保并非所有值都不同(即 False)。由于 (1, 1)、(5, 6) 和 (0, 0) 都有不同的值,因此它正确地将所有三个元组评估为 [False, False, False]。
以实现您想要的输出,你可以修改代码如下:
print([x[0] != x[1] for x in zip(*d['Drd2'])]) # [False, True, False]
这直接检查每个元组中的第一个和第二个元素是否不同,从而得到预期的输出 [False, True,假]。
以上是Python 的 `any()` 和 `all()` 函数如何有效评估可迭代对象的真实性?的详细内容。更多信息请关注PHP中文网其他相关文章!