可能重复:
check if all elements in a list are identical如何检查列表中的每个元素是否相等?
我要检查所有列表的元素是相等的。我不能这样做:
if all (x == x for x in (a, b, c, d)):
...
是否有非常简约和优雅的方式来在Python中做到这一点?
可能重复:
check if all elements in a list are identical如何检查列表中的每个元素是否相等?
我要检查所有列表的元素是相等的。我不能这样做:
if all (x == x for x in (a, b, c, d)):
...
是否有非常简约和优雅的方式来在Python中做到这一点?
如果您的列表中只有可哈希元素,则可以使用set。
例如,如果您的列表名为lst
你可以这样做:
if (len(set(lst)) <= 1):
....
装置会消除你的列表中的所有副本,因此,如果集的长度为这意味着所有的元素是相同的。
如果列表中的项目不可散列,这将失败。 –
的确,我不知道为什么,但我认为他会比较数字,我会编辑答案。谢谢 –
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!
你能解释一下这是如何工作的吗? –
reduce将一个函数应用到列表中的每一对元素,直到只剩下一个标量值.. bah减少没有工作...生病看看我能否得到一个版本与减少工作 –
失败'[False, False]' – Eric
all(x == items[0] for x in items)
这是你在找什么。
否则,您会比较每个值到自己x==x
而不是每个值到第一个值。
http://stackoverflow.com/questions/3844801/check-if-all-elements-in-a-list-are-identical –
你不只是比较每个元素在这里吗?一个元素何时不等于自身? –
@FelixKling:'float('nan')' – Eric