在Python中,是一种测试列表中所有值彼此相等的简单方法吗?
答案 0 :(得分:39)
想到很多方法。 您可以在的长度编辑:正如另一张海报所指出的,这只适用于哈希类型;我撤销了这个建议,因为它的性能更差并且不那么通用。set
(过滤掉重复项)中检查它并检查一个
你可以使用一个生成器表达式:all(items[0] == item for item in items)
,它会短路(即一旦谓词对一个项目失败而不是继续,就会返回false。)
答案 1 :(得分:12)
>>> a = [1, 1, 1, 1]
>>> len(set(a))
1
请注意,此方法假定列表中的每个元素都可以放入一个集合中。某些类型(例如可变类型)无法放入集合中。
答案 2 :(得分:3)
>>> l = [1, 1, 1, 1]
>>> all(map(lambda x: x == l[0], l))
True
答案 3 :(得分:1)
使用Greg Hewgill指出的set
是一个很好的解决方案。这是另一个更懒惰的,所以如果一对元素不相等,其余的将不会被比较。在比较所有项目时,这可能比set
解决方案慢,但没有对其进行基准测试。
l = [1, 1, 1]
all(l[i] == l[i+1] for i in range(len(l)-1))
请注意特殊情况all([]) == True
。