所有列表值都相同

时间:2011-01-20 20:37:31

标签: python list

在Python中,是一种测试列表中所有值彼此相等的简单方法吗?

4 个答案:

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