Python 列表的布尔表达式
当列表中的元素都相同时,如果要返回Python 列表的布尔表达式,python,list,count,boolean,Python,List,Count,Boolean,当列表中的元素都相同时,如果要返回True,我需要做什么 当有一个元素不相同时,False 例如: >>> f([3, 3, 3]) True >>> f([3, 3, 3, 2, 3, 3]) False 我试图为循环创建一个: for i in My_list: if i = ?: return False else: return True 但是我不知道我需要在中写什么?Python有一个
True
,我需要做什么
当有一个元素不相同时,False
例如:
>>> f([3, 3, 3])
True
>>> f([3, 3, 3, 2, 3, 3])
False
我试图为循环创建一个:
for i in My_list:
if i = ?:
return False
else:
return True
但是我不知道我需要在中写什么?
Python有一个只包含唯一元素的函数;只要列表元素始终是可散列的(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
如果所有相同([])
也应返回True
,则将其设置为
try:
all(my_list[0] == elem for elem in my_list[1:])
except IndexError:
(Whatever you prefer)
或
有几种方法,IMO最可爱的方法是:
def f(lst):
return lst[1:]==lst[:-1]
这基本上检查列表旋转1时是否保持不变,当且仅当所有元素相等时,这才是真的:
A B C D E F G
A B C D E F G
A B C D E F G
就个人而言,我会为列表中的第一个值设置一个变量,并在一个条件中对照它检查所有其他元素,如果有不同,则返回False。然后在该语句之外有一个return True
语句,用于判断False
是否从未返回。谢谢!你的len(set(my_list))==1非常有用!
def f(lst):
return lst[1:]==lst[:-1]
A B C D E F G
A B C D E F G