2014-11-23 78 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