我想检查列表中的所有元素是否相等。我不能这样做:
if all (x == x for x in (a, b, c, d)):
...
在Python中有这种非常简约和优雅的方法吗?
答案 0 :(得分:4)
如果列表中只有可清除元素,则可以使用set。
例如,如果您的列表名为lst
,则可以执行以下操作:
if (len(set(lst)) <= 1):
....
该集合将消除列表中的所有重复项,因此如果集合的长度为 1 ,则表示所有元素都相同。
答案 1 :(得分:1)
all(x == items[0] for x in items)
这就是你要找的东西。
否则,您将每个值与自身x==x
进行比较,而不是将每个值与第一个值进行比较。
答案 2 :(得分: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!
答案 3 :(得分:-1)