如何检查列表中的所有元素是否相同?

时间:2015-03-01 14:28:43

标签: python list

有一个列表,其项目是整数或字符串NULL。如何检查列表是否全部为NULL,而不使用循环检查列表中的每个项目?

1 个答案:

答案 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