首页 >后端开发 >Python教程 >Python 的 `any()` 和 `all()` 函数如何有效评估可迭代对象的真实性?

Python 的 `any()` 和 `all()` 函数如何有效评估可迭代对象的真实性?

Barbara Streisand
Barbara Streisand原创
2025-01-04 08:02:33457浏览

How Do Python's `any()` and `all()` Functions Work for Efficient Truthiness Evaluation of Iterables?

理解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中文网其他相关文章!

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