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

标签 python list

有一个列表,其项是整数或字符串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/

相关文章:

R:从函数获取规则

python - 加快列表中的查找项(通过 Python)

python pygame将随机坐标星星放在屏幕上但重叠

java - 如何检查java中列表中是否存在值

r - 如何重新排列两个数据帧之间的匹配顺序

Python - 创建一个从给定值开始到给定长度结束的列表

python - PyCharm 代码检查不包括 PEP 8

python很难设置lambda函数

python - 有什么方法可以告诉 selenium 在某个时候不要执行 js?

python - 为什么这个 Python 生成器/协程会丢失一个值?