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

a = []

如何检查a是否为空?


当前回答

让我来到这里的是一个特殊的用例:我实际上想要一个函数来告诉我列表是否为空。我想避免在这里编写自己的函数或使用lambda表达式(因为它看起来应该足够简单):

foo = itertools.takewhile(is_not_empty, (f(x) for x in itertools.count(1)))

当然,有一种非常自然的方法:

foo = itertools.takewhile(bool, (f(x) for x in itertools.count(1)))

当然,不要在if(即if bool(L):)中使用bool,因为它是隐含的。但是,对于明确需要“不为空”作为函数的情况,bool是最佳选择。

其他回答

len()是Python列表、字符串、字典和集合的O(1)操作。Python在内部跟踪这些容器中的元素数量。

JavaScript具有类似的truthy/falsy概念。

方法1(首选):

if not a:
   print ("Empty")

方法2:

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

方法3:

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

来自真实值测试的文档:

此处列出的值以外的所有值均视为True

没有一个错误任何数字类型的零,例如0、0.0、0j。任何空序列,例如“”、()、[]。任何空映射,例如{}。如果类定义了__bool_()或__len__()方法,则该方法返回整数零或布尔值False。

可以看出,空列表[]是错误的,因此对布尔值执行操作听起来最有效:

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

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

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

达伦·托马斯的回答:

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

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

我们可以使用一个简单的if else:

item_list=[]
if len(item_list) == 0:
    print("list is empty")
else:
    print("list is not empty")