如何检查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 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |