python - 如何检查可迭代对象中是否只有一个值解析为 True?

标签 python list expression

<分区>

是否有一种优雅、可读的方法来检查可迭代it中的所有元素是否都解析为True(您可以假设所有值都是 bool 值,尽管这与我的问题)?我想到了:

any(it) and not reduce(lambda x, y: x and y, it)

但我认为 reduce 使理解起来有些困惑,而且我认为它不起作用:

In [1]: a=[True, True, False]

In [7]: any(a) and not reduce(lambda x, y: x and y, a)
Out[7]: True

有没有更易读的方法?

更新:我意识到我上面的表达有误。 reduce() 在看到 True 而不是继续时需要停止

最佳答案

您的标题与问题的主体不一致,但我会回答标题。

您可以求和 bool 值。检查它是否等于 1(或您想要的任何值):

>>> a = [True, True, False]
>>> sum(a)
2
>>> b = ['hey', '', 'a string']
>>> sum(map(bool,b))
2

关于python - 如何检查可迭代对象中是否只有一个值解析为 True?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22798938/

相关文章:

python - Mongo 嵌入式文档查询

python - reshape 数组后keras中的索引错误

java - 列表实现中的 ClassCastException?

Python 初学者 - 如何从另一个列表生成列表和频率

c# - 在运行时创建动态 LINQ 查询表达式,将其转换为参数化 SQL 查询

java - 求解字符串格式的方程

c# - 类型成员的表达式导致不同的表达式(MemberExpression、UnaryExpression)

python - 为什么 numpy 的 root 失败?

python - 如何告诉 VScode,在我运行 high Sierra 的 Mac 上使用哪个版本的 python

Django : SimpleListFilter queryset