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

Detect empty list vs list of empty strings

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

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

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

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

这个不行。什么是 Pythonic 方法来检测我猜是在上述情况下包含空字符串的列表?

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

只有没有成员的列表才为空。它有成员,但它们是空的,它仍然有成员,so it's still truthy


如果要测试一个列表的成员是否全部为空,可以这样写:

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

all function should be pretty obvious. The argument to it might not be. It's a generator expression—if you've never seen one, first read about list comprehensions, then iterators 及以下两节。


或者你可以反过来测试是否有成员不为空:

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

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

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