0

可能重复:
检查列表中的所有元素是否相同

我想检查列表的所有元素是否相等。我不能这样做:

if all (x == x for x in (a, b, c, d)):
    ...

在 Python 中是否有非常简约和优雅的方式来做到这一点?

4

4 回答 4

5

如果列表中只有可散列的元素,则可以使用set

例如,如果您的列表被命名lst,您可以执行以下操作:

if (len(set(lst)) <= 1):
    ....

该集合将消除列表中的所有重复项,因此如果集合的长度为1,则意味着所有元素都相同。

于 2012-10-29T17:44:59.463 回答
3
all(x == items[0] for x in items)

这就是你要找的。

否则,您会将每个值与自身进行比较x==x,而不是将每个值与第一个值进行比较。

于 2012-10-29T17:44:53.620 回答
0
first = my_list[0]
print all(x==first for x in my_list[1:])

应该管用

也许更优雅......(我真的不这么认为......)

>>> if reduce(lambda item0,item1:item0 if item0==item1 else False,my_list) is not False:
...    print "OK ALL THE SAME!"
...
OK ALL THE SAME!
于 2012-10-29T17:43:53.603 回答
-2

在这里回答,带有性能基准

我最喜欢的 :lst[1:] == lst[:-1]

于 2012-10-29T17:46:21.663 回答