當我想要返回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
,但我不知道我需要在?
寫。
當我想要返回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
,但我不知道我需要在?
寫。
要麼
try:
all(my_list[0] == elem for elem in my_list[1:])
except IndexError:
(Whatever you prefer)
或
len(set(my_list)) == 1
感謝火山!你的len(set(my_list))== 1非常有用! – Victor 2014-11-23 15:36:30
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
有幾種方法,國際海事組織最可愛的一個是:
def f(lst):
return lst[1:]==lst[:-1]
這基本上檢查列表是否保留相同的,如果你旋轉一個,這是真的當且僅當所有元素相等:
A B C D E F G A B C D E F G
你是什麼意思? – Victor 2014-11-23 15:32:07
個人而言,我會爲列表中的第一個值設置一個變量,並在條件中檢查所有其他元素,如果有任何不同,則返回False。然後在這之外有一個'return True'語句,如果'False'永遠不會返回。 – HarryCBurn 2014-11-23 15:32:53