将布尔值与列表中的整数 0 和 1 区分开来

Distinguish bool from integers 0 and 1 in list

提问人:Тимофей Макаров 提问时间:11/8/2023 最后编辑:mkrieger1Тимофей Макаров 更新时间:11/8/2023 访问量:85

问:

s = [0, 1, True]

我有一个列表,我想找到 True 并访问它。我知道,,真的没有办法不循环吗?False == 0True == 1

print(s.index(True)) # output: 1
print(s.count(True)) # output: 2

我尝试转换为 ,并将其与字符串进行比较,然后将响应包装在 中。我试过比较,但我想知道如何比迭代每个元素更优雅地做到这一点。boolstr'True'bool()type()

Python 布尔值

评论

0赞 Matthias 11/8/2023
您必须遍历每个元素,直到找到结果。 并做同样的事情。indexcount
0赞 ivvija 11/8/2023
问题在于,这些函数使用平等,而不是身份。您可能必须使用检查来编写自定义,因为返回 .index_identity(iterable, needle)elem is needle1 is TrueFalse
0赞 Matthias 11/8/2023
count可以实现为 .sum(isinstance(x, bool) and x for x in s)
0赞 Matthias 11/8/2023
因为我想出了 ,但可能有更好的解决方案。indexnext(filter(lambda x: isinstance(x[1], bool) and x[1], enumerate(s)), (-1, None))[0]
0赞 buran 11/8/2023
我想找到 True 并访问它 - 你到底想用它做什么?你真的需要索引吗?这闻起来像XY问题

答: 暂无答案