如果我有這個列表;如何檢查列表中的所有元素是否相同?
mylist = ['n', 'n', '4', '3', 'w']
我如何得到它來讀取列表,並告訴我,他們是否都一樣?
我知道,在這個例子中很容易判斷它們並不完全相同。我有更大的列表,我希望它爲我閱讀。
我會去這個使用:
min(...)
如果是的話,我將如何輸入每個列表項?
如果我有這個列表;如何檢查列表中的所有元素是否相同?
mylist = ['n', 'n', '4', '3', 'w']
我如何得到它來讀取列表,並告訴我,他們是否都一樣?
我知道,在這個例子中很容易判斷它們並不完全相同。我有更大的列表,我希望它爲我閱讀。
我會去這個使用:
min(...)
如果是的話,我將如何輸入每個列表項?
您可以使用這樣設置
len(set(mylist)) == 1
說明
臺店在他們唯一的唯一項目。所以,我們嘗試將列表轉換爲一個集合。轉換後,如果集合中有多個元素,則表示並非列表中的所有元素都是相同的。
注意:如果列表中有不可更新的項目(如列表,自定義類等),則不能使用set
方法。但是,我們可以使用@falsetru建議第一種方法,
all(x == mylist[0] for x in mylist)
優點:
它甚至與unhashable類型
它不會在創建另一個臨時對象的工作原理記憶。
第一次故障後短路。如果第一個和第二個元素不匹配,則立即返回False
,而在set
方法中,必須對所有元素進行比較。所以,如果名單很大,你應該更喜歡all
方法。
即使列表實際上是空的,它也可以工作。如果迭代中沒有元素,all
將返回True
。但空單將創建一個空set
對於其長度爲0。
all(x == mylist[0] for x in mylist)
備選:
mylist.count(mylist[0]) == len(mylist)
注意第一隻要發現列表中有任何不同的項目,就會停下來,而替代項目則不會。
這真的很聰明 – Tyler
希望我的心靈可以像這樣工作:P – Gogo
請注意,這隻適用於可排列的物品。在清單列表中執行此操作將不起作用。 –