我有一个词典列表.我需要检查该列表中的所有字典是否都为空.我正在寻找一个简单的声明,将在一行中完成.
是否有单行方式来执行以下操作(不包括打印)?
l = [{},{},{}] # this list is generated elsewhere...
all_empty = True
for i in l:
if i:
all_empty = False
print all_empty
Run Code Online (Sandbox Code Playgroud)
python有些新东西...我不知道是否有一种速记内置方式来检查这个.提前致谢.
not any(d for d in l)是相当于德·摩根定律来all(not d for d in l),但只适用于一个not运营商.短路行为也是等效的.
编辑1:内部genexp实际上(无害但是)冗余:not any(l)更快更简洁.
编辑2:评论声称all(not d for d in l)"你想要表达的更多" not any(l),而且我强烈不同意:即使在自然语言中,"列表中的所有项目都是无人居住的"不是更正常,直接或明确而不是"否"列表的项目填充" - 超出逻辑定律的绝对逻辑等价,两种表达方式也非常接近,并且在人类心理学方面也大致相同.