我是Python的新手,我已经搜索了检测空列表的解决方案。假设我们有一个空字符串,例如:
a = ''
if not a:
print('a is empty')
这很好用。但是,我的问题出现在:
a = ['','','']
if not a:
print('a is empty')
这个不起作用。什么是Pythonic方法来检测我猜的是包含空字符串的列表?
提前感谢您的意见和建议。
答案 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指出的那样,这个可能会快一点,但对于大多数用途来说可能不够重要。)