有一个列表,其项目是整数或字符串NULL
。如何检查列表是否全部为NULL
,而不使用循环检查列表中的每个项目?
答案 0 :(得分:4)
将列表转换为集合并将其与此进行比较
>>> set(["NULL", "NULL"]) == {"NULL"}
True
>>> set(["NULL", "NULL", 1]) == {"NULL"}
False
将列表转换为set
时,将删除所有重复项,并仅保留唯一值。现在,您可以将其与仅NULL
的另一个集合进行比较。它们都是相同的,那么你的实际列表只有NULL
s。
注意:只有列表中的所有项目都可以播放时,转换为set
才有效。在您的情况下,您只有数字和字符串。所以,你在这里很好。
替代,惯用的方式是使用all
函数(或其姐妹函数any
)
>>> all(item == "NULL" for item in ["NULL", "NULL", 1])
False
>>> all(item == "NULL" for item in ["NULL", "NULL"])
True
此处,如果非NULL
值位于中间位置,则all
将立即返回False
,您不必检查整个列表。同样,any
也可以与not
一样使用
>>> not any(item != "NULL" for item in ["NULL", "NULL", 1])
False
>>> not any(item != "NULL" for item in ["NULL", "NULL"])
True