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

a = []

如何检查a是否为空?


当前回答

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

not a

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

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

其他回答

从python3开始,您可以使用

a == []

检查列表是否为空

编辑:这也适用于python2.7。。

我不知道为什么有这么多复杂的答案。这很清楚明了

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

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

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

非常方便和有用。

方法1(首选):

if not a:
   print ("Empty")

方法2:

if len(a) == 0:
   print("Empty")

方法3:

if a == []:
  print ("Empty")

要检查列表是否为空,可以使用以下两种方法。但请记住,我们应该避免显式检查序列类型的方式(这是一种不太像Python的方式):

def enquiry(list1):
    return len(list1) == 0

# ––––––––––––––––––––––––––––––––

list1 = []

if enquiry(list1):
    print("The list isn't empty")
else:
    print("The list is Empty")

# Result: "The list is Empty".

第二种方式是一种更具Python风格的方式。这种方法是一种隐式检查方法,比前一种方法更可取。

def enquiry(list1):
    return not list1

# ––––––––––––––––––––––––––––––––

list1 = []

if enquiry(list1):
    print("The list is Empty")
else:
    print("The list isn't empty")

# Result: "The list is Empty"

受到dubiusjim解决方案的启发,我建议使用一个额外的常规检查,看看它是否可以迭代:

import collections
def is_empty(a):
    return not a and isinstance(a, collections.Iterable)

注意:如果希望排除空字符串,则字符串被认为是可迭代的add,而不是isinstance(a,(str,unicode))

测试:

>>> is_empty('sss')
False
>>> is_empty(555)
False
>>> is_empty(0)
False
>>> is_empty('')
True
>>> is_empty([3])
False
>>> is_empty([])
True
>>> is_empty({})
True
>>> is_empty(())
True