可能重複:
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