2014-11-23 129 views
-1

當我想要返回True時,當列表中的元素全部相同時,我需要做什麼 和False當有一個元素不相同時?列表的布爾表達式

例如:

>>> f([3, 3, 3]) 
True 
>>> f([3, 3, 3, 2, 3, 3]) 
False 

我試圖讓一個for循環:

for i in My_list: 
    if i = ?: 
     return False 
    else: 
     return True 

,但我不知道我需要在?寫。

+0

你是什麼意思? – Victor 2014-11-23 15:32:07

+0

個人而言,我會爲列表中的第一個值設置一個變量,並在條件中檢查所有其他元素,如果有任何不同,則返回False。然後在這之外有一個'return True'語句,如果'False'永遠不會返回。 – HarryCBurn 2014-11-23 15:32:53

回答

0

要麼

try: 
    all(my_list[0] == elem for elem in my_list[1:]) 
except IndexError: 
    (Whatever you prefer) 

len(set(my_list)) == 1 
+0

感謝火山!你的len(set(my_list))== 1非常有用! – Victor 2014-11-23 15:36:30

1

Python有一個set type,它只保存唯一的元素;只要你的列表中的元素永遠是哈希的(int s爲),您可以測試結果集的長度:

>>> def all_the_same(l): 
    return len(set(l)) == 1 

>>> all_the_same([3, 3, 3]) 
True 
>>> all_the_same([3, 3, 3, 2, 3, 3]) 
False 

如果all_the_same([])也應該返回True,使其<= 1


注意,要與for循環做到這一點,這是False如果任何元素不匹配,只有當True所有元素比賽。因此,這將是這個樣子:

def all_the_same(l): 
    for x in l: 
     if x != l[0]: 
      return False 
    else: 
     return True 
1

有幾種方法,國際海事組織最可愛的一個是:

def f(lst): 
    return lst[1:]==lst[:-1] 

這基本上檢查列表是否保留相同的,如果你旋轉一個,這是真的當且僅當所有元素相等:

A B C D E F G 
    A B C D E F G