检查列表是否为空而不使用`not`命令

如何在不使用not命令的情况下查看列表是否为空?
这是我试过的:

if list3[0] == []:  
    print "No matches found"  
else:  
    print list3

如果我犯了愚蠢的错误,我是一个初学者,所以很抱歉。


按照优先顺序:

# Good
if not list3:

# Okay
if len(list3) == 0:

# Ugly
if list3 == []:

# Silly
try:
    next(iter(list3))
    # list has elements
except StopIteration:
    # list is empty

如果你同时拥有一个if和一个else,你可能也会重新排列案例:

if list3:
    # list has elements
else:
    # list is empty

通过测试它的“真实性”,你可以发现列表是否为空:

>>> bool([])
False
>>> bool([0])     
True

而在第二种情况下, 0为False,但列表[0]为True,因为它包含某些内容。 (如果你想测试一个包含所有虚假事物的列表,使用全部或任何: any(e for e in li)如果any(e for e in li)为真,如果li任何项是真的。)

这导致了这个习惯用法:

if li:
    # li has something in it
else:
    # optional else -- li does not have something 

if not li:
    # react to li being empty
# optional else...

根据PEP 8,这是正确的方式:

•对于序列(字符串,列表,元组),请使用空序列为假的事实。

Yes: if not seq:
     if seq:

No: if len(seq)
    if not len(seq)

您可以使用try测试列表是否存在特定的索引:

>>> try:
...    li[3]=6
... except IndexError:
...    print 'no bueno'
... 
no bueno

所以你可能想要将你的代码的顺序颠倒过来:

if list3:  
    print list3  
else:  
    print "No matches found"

检查它的长度。

l = []
print len(l) == 0
链接地址: http://www.djcxy.com/p/22503.html

上一篇: Check if list is empty without using the `not` command

下一篇: Calculating arithmetic mean (average) in Python