检测空列表与空字符串列表

时间:2018-04-28 08:21:08

标签: python string python-3.x list empty-list

我是Python的新手,我已经搜索了检测空列表的解决方案。假设我们有一个空字符串,例如:

a = ''
if not a:
    print('a is empty')

这很好用。但是,我的问题出现在:

a = ['','','']
if not a:
    print('a is empty')

这个不起作用。什么是Pythonic方法来检测我猜的是包含空字符串的列表?

提前感谢您的意见和建议。

1 个答案:

答案 0 :(得分:3)

如果列表没有成员,则列表为空。它有成员,但他们已经空了,它仍然有成员so it's still truthy

如果要测试列表中的所有成员是否为空,可以这样写:

if all(not element for element in a):
    print('a is made of empty things')

all功能应该非常明显。它的论点可能不是。它是一个生成器表达式 - 如果您从未见过它,请先阅读list comprehensions,然后阅读iterators以及以下两部分。

或者你可以转过来测试是否有任何成员都不是空的:

if not any(a):
    print('a is made of empty things')

双重否定似乎有点难以理解。但另一方面,这意味着您不需要理解生成器表达式(因为(element for element in a)a完全相同,所以我们可以保持简单)。

(而且,正如PM 2Ring指出的那样,这个可能会快一点,但对于大多数用途来说可能不够重要。)