检查列表是否包含与某些内容不同的元素

有没有一种有效的方法来检查列表是否包含与其他元素不同的元素?

我有很多这样的列表:

a = ["_", "_", "_", "_"]
b = ["_", "b", "_", "_"]
c = ["a", "_", "x", "_"]

它们大多是下划线,但有时有一个元素不是下划线。我只想处理那些有“内容”的人。目前,我使用 for 循环检查是否存在非下划线元素。有没有更有效的方法?

回答

对于裸布尔检查,您可以像这样使用mapany

for lst in (a, b, c):
    print(any(map("_".__ne__, lst)))
# False
# True
# True

或者更明确一点:

any(x != "_" for x in lst)

any 与您建议的设置长度方法相比,具有短路(在第一次命中时停止)的优势:

len(set(lst)) > 1

如果这使它在现实世界中更快取决于您的数据。如果您的大多数列表只是下划线,因此整个迭代,则集合转换(C 优化)可能会更快。


以上是检查列表是否包含与某些内容不同的元素的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>