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

a = []

如何检查a是否为空?


当前回答

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

使用空列表的隐含布尔性是相当Python的。

其他回答

我更喜欢明确地说:

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

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

我曾写道:

if isinstance(a, (list, some, other, types, i, accept)) and not a:
    do_stuff

投票结果为-1。我不确定这是否是因为读者反对这一策略,或者认为答案没有帮助。我会假装是后者,因为——无论什么叫做“蟒蛇”——这是正确的策略。除非你已经排除了,或者已经准备好处理a为False的情况,否则你需要一个比不是:更严格的测试。你可以用这样的方法:

if isinstance(a, numpy.ndarray) and not a.size:
    do_stuff
elif isinstance(a, collections.Sized) and not a:
    do_stuff

第一个测试是对上面@Mike的回答的回应。第三行也可以替换为:

elif isinstance(a, (list, tuple)) and not a:

如果您只想接受特定类型(及其子类型)的实例,或者使用:

elif isinstance(a, (list, tuple)) and not len(a):

如果不进行显式类型检查,您就可以离开,但前提是周围的上下文已经向您保证a是您准备处理的类型的值,或者如果您确定您不准备处理的那些类型将引发您准备好处理的错误(例如,如果您在未定义的值上调用len,则为TypeError)。总的来说,“蟒蛇”习俗似乎走到了最后一条路。像鸭子一样挤压它,如果它不知道如何呱呱叫,就让它养一只鸭子。不过,你仍然需要考虑你正在做什么样的假设,以及你没有准备好正确处理的案例是否真的会在正确的地方出错。Numpy数组是一个很好的例子,其中仅仅盲目地依赖len或布尔类型转换可能无法实现预期的效果。

简单的方法是检查长度是否等于零。

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

使用空列表的隐含布尔性是相当Python的。

方法1(首选):

if not a:
   print ("Empty")

方法2:

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

方法3:

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