例如,如果通过以下步骤:

a = []

如何检查a是否为空?


当前回答

您甚至可以尝试像这样使用bool()。虽然它的可读性较低,但它确实是一种简洁的方法。

    a = [1,2,3];
    print bool(a); # it will return True
    a = [];
    print bool(a); # it will return False

我喜欢这种方式,因为检查列表是否为空。

非常方便和有用。

其他回答

为什么要检查?

似乎没有人回答过你首先需要测试列表的问题。因为您没有提供额外的上下文,我可以想象,您可能不需要首先执行此检查,但不熟悉Python中的列表处理。

我认为,最Python的方法是根本不检查,而只是处理列表。这样,无论是空的还是满的,它都会做正确的事情。

a = []

for item in a:
    # <Do something with item>

# <The rest of code>

这有利于处理的任何内容,同时不需要对空性进行特定检查。如果a为空,则依赖块将不执行,解释器将进入下一行。

如果确实需要检查数组是否为空:

a = []

if not a:
    # <React to empty list>

# <The rest of code>

足够了。

我更喜欢明确地说:

if len(li) == 0:
    print('the list is empty')

通过这种方式,可以100%清楚地看出li是一个序列(列表),我们想测试它的大小。我的问题,如果不是李:。。。这给人一种错觉,认为li是一个布尔变量。

print('not empty' if a else 'empty')

更实用一点:

a.pop() if a else None

最短版本:

if a: a.pop() 

已经给出了很多答案,其中很多都很好。我只是想加上那张支票

not a

也将通过None和其他类型的空结构。如果您确实想检查空列表,可以执行以下操作:

if isinstance(a, list) and len(a)==0:
    print("Received an empty list")

在真值测试中,空列表本身被认为是错误的(请参见python文档):

a = []
if a:
     print("not empty")

达伦·托马斯的回答:

编辑:反对测试的另一点空列表为False:多态性?你不应该依赖列表是列表。它应该只是像鸭子一样呱呱叫-你怎么样让你的duckCollection呱呱叫当它没有元素时为“False”?

duckCollection应该实现__nonzero_或__len__,因此if-a:将毫无问题地工作。