列表的布尔表达式

时间:2014-11-23 15:20:57

标签: python list count boolean

当我希望在列表中的元素完全相同时返回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

但我不知道我需要在?写一下。

3 个答案:

答案 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