当我想要返回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