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

a = []

如何检查a是否为空?


当前回答

def list_test (L):
    if   L is None  : print('list is None')
    elif not L      : print('list is empty')
    else: print('list has %d elements' % len(L))

list_test(None)
list_test([])
list_test([1,2,3])

有时单独测试无和空是很好的,因为这是两种不同的状态。上述代码产生以下输出:

list is None 
list is empty 
list has 3 elements

虽然没有一件事是假的,但这毫无价值。所以,如果你不想单独测试“无”,你不必这么做。

def list_test2 (L):
    if not L      : print('list is empty')
    else: print('list has %d elements' % len(L))

list_test2(None)
list_test2([])
list_test2([1,2,3])

预期产量

list is empty
list is empty
list has 3 elements

其他回答

以下是检查列表是否为空的几种方法:

a = [] #the list

1) 非常简单的蟒蛇方式:

if not a:
    print("a is empty")

在Python中,空容器(如列表、元组、集合、字典、变量等)被视为False。可以简单地将列表视为谓词(返回布尔值)。True值表示它为非空。

2) 一种非常明确的方法:使用len()查找长度并检查它是否等于0:

if len(a) == 0:
    print("a is empty")

3) 或者将其与匿名空列表进行比较:

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

4) 另一种愚蠢的方法是使用exception和iter():

try:
    next(iter(a))
    # list has elements
except StopIteration:
    print("Error: a 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

方法1(首选):

if not a:
   print ("Empty")

方法2:

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

方法3:

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

Pythonic的做法来自PEP8风格指南。

对于序列(字符串、列表、元组),请使用空序列为false的事实:#正确:如果不是seq:如果seq:#错误:如果len(seq):如果不是len(seq):

def list_test (L):
    if   L is None  : print('list is None')
    elif not L      : print('list is empty')
    else: print('list has %d elements' % len(L))

list_test(None)
list_test([])
list_test([1,2,3])

有时单独测试无和空是很好的,因为这是两种不同的状态。上述代码产生以下输出:

list is None 
list is empty 
list has 3 elements

虽然没有一件事是假的,但这毫无价值。所以,如果你不想单独测试“无”,你不必这么做。

def list_test2 (L):
    if not L      : print('list is empty')
    else: print('list has %d elements' % len(L))

list_test2(None)
list_test2([])
list_test2([1,2,3])

预期产量

list is empty
list is empty
list has 3 elements