可能重复:
检查列表中的所有元素是否相同
我想检查列表的所有元素是否相等。我不能这样做:
if all (x == x for x in (a, b, c, d)):
...
在 Python 中是否有非常简约和优雅的方式来做到这一点?
可能重复:
检查列表中的所有元素是否相同
我想检查列表的所有元素是否相等。我不能这样做:
if all (x == x for x in (a, b, c, d)):
...
在 Python 中是否有非常简约和优雅的方式来做到这一点?
如果列表中只有可散列的元素,则可以使用set。
例如,如果您的列表被命名lst
,您可以执行以下操作:
if (len(set(lst)) <= 1):
....
该集合将消除列表中的所有重复项,因此如果集合的长度为1,则意味着所有元素都相同。
all(x == items[0] for x in items)
这就是你要找的。
否则,您会将每个值与自身进行比较x==x
,而不是将每个值与第一个值进行比较。
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!
在这里回答,带有性能基准
我最喜欢的 :lst[1:] == lst[:-1]