【问题标题】:How to check if every element in list are equal? [duplicate]如何检查列表中的每个元素是否相等? [复制]
【发布时间】:2012-10-29 17:41:40
【问题描述】:

可能重复:
check if all elements in a list are identical

我想检查列表中的所有元素是否相等。我不能这样做:

if all (x == x for x in (a, b, c, d)):
    ...

在 Python 中是否有非常简约和优雅的方式来做到这一点?

【问题讨论】:

标签: python list


【解决方案1】:

如果您的列表中只有可散列的元素,您可以使用set

例如,如果您的列表名为 lst,您可以这样做:

if (len(set(lst)) <= 1):
    ....

集合会消除列表中的所有重复项,因此如果集合的长度为1,则表示所有元素都相同。

【讨论】:

  • 如果列表中的项目不可散列,这将失败。
  • 没错,我不知道为什么,但我以为他会比较数字,我会编辑答案。谢谢
【解决方案2】:
all(x == items[0] for x in items)

这就是你要找的。​​p>

否则,您会将每个值与自身进行比较 x==x,而不是将每个值与第一个值进行比较。

【讨论】:

    【解决方案3】:
    first = my_list[0]
    print all(x==first for x in my_list[1:])
    

    应该工作

    也许更优雅……(我真的不这么认为……)

    >>> if reduce(lambda item0,item1:item0 if item0==item1 else False,my_list) is not False:
    ...    print "OK ALL THE SAME!"
    ...
    OK ALL THE SAME!
    

    【讨论】:

    • 您能解释一下这是如何工作的吗?
    • reduce 对列表中的每一对元素应用一个函数来缩小它,直到只剩下一个标量值.. bah reduce 没用......我看看我是否可以得到一个与 reduce 一起工作的版本
    【解决方案4】:

    已回答here,带有性能基准

    我最喜欢的:lst[1:] == lst[:-1]

    【讨论】:

    • 那么请投票关闭/将此问题标记为重复,不要复制答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-08-16
    • 1970-01-01
    • 2012-08-22
    • 1970-01-01
    • 2013-09-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多