加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

如何检查iterable中只有一个值是否解析为True?

发布时间:2020-12-20 12:06:08 所属栏目:Python 来源:网络整理
导读:参见英文答案 How can I check that a list has one and only one truthy value?????????????????????????????????????17个 是否有一种优雅,可读的方式来检查迭代中的所有元素是否都解析为True(您可以假设所有值都是布尔值,尽管这与我的问题无关)?我提出了
参见英文答案 > How can I check that a list has one and only one truthy value?????????????????????????????????????17个
是否有一种优雅,可读的方式来检查迭代中的所有元素是否都解析为True(您可以假设所有值都是布尔值,尽管这与我的问题无关)?我提出了:

任何(它)而不是减少(lambda x,y:x和y,它)

但是我认为减少使得理解有点混乱加上我觉得它不起作用:

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时停止,而不是继续.

解决方法

你的标题不同意你的问题,但我会回答标题.

您可以对布尔值求和.检查它是否等于1(或你想要的任何值):

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读