当我希望在列表中的元素完全相同时返回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 :(得分: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 :(得分:1)
有几种方法,IMO最可爱的方法是:
def f(lst):
return lst[1:]==lst[:-1]
如果将列表旋转一个,这基本上会检查列表是否保持不变,当且仅当所有元素都相等时才会生效:
A B C D E F G A B C D E F G
答案 2 :(得分:0)
无论
try:
all(my_list[0] == elem for elem in my_list[1:])
except IndexError:
(Whatever you prefer)
或
len(set(my_list)) == 1