有一个列表,其项是整数或字符串NULL
。如何在不使用循环检查列表中的每个项目的情况下检查列表是否全部为 NULL
?
最佳答案
将列表转换为集合并像这样进行比较
>>> set(["NULL", "NULL"]) == {"NULL"}
True
>>> set(["NULL", "NULL", 1]) == {"NULL"}
False
当您将列表转换为集
时,所有重复项都将被删除,仅保留唯一值。现在,您可以仅使用 NULL
将它与另一组进行比较。它们都相等,那么您的实际列表只有 NULL
。
注意:只有当您的列表中的所有项目都可散列时,转换为 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
关于python - 如何检查列表中的所有元素是否相同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28794674/