布尔在Python中测试列表

Jas*_*ite 8 python boolean list

我正在测试一个列表,看看它是否为空.通常我使用len(list)== 0,我隐约记得刚读过一段时间来测试列表是否为空的正确方法是它是真还是假.

所以我试过list是False,那返回False.也许我想要使用==?不,那也是假的.list为True,返回false,如list == True.

现在我很困惑所以我做了一个快速谷歌并最终:最好的方法来检查列表是否为空

最佳答案是:

if not a:
    print "List is empty"
Run Code Online (Sandbox Code Playgroud)

所以我搜索更多内容并最终在python手册中,其中4.1声明:

可以测试任何对象的真值,用于if或while条件或作为下面布尔运算的操作数.以下值被视为false:

任何空序列,例如'',(),[].

现在我很困惑.如果我测试列表就好像不是列表,它可以正常工作.但是如果一个空列表是假的,那么为什么我不能这样做,如果list是False或者list == False?

谢谢

Bre*_*arn 14

空列表不是False,但是当您将其转换为布尔值时,它将转换为False.同样,对于dicts,元组,字符串等:

>>> [] == False
False
>>> bool([]) == False
True
>>> {} == False
False
>>> bool({}) == False
True
Run Code Online (Sandbox Code Playgroud)

当你在一个if子句的条件下放置一些东西时,它的布尔值就是用来测试它的if.这就是为什么if someList是一样的if bool(someList).同样,not foo布尔值不是,所以not []等于True.