确定2个列表是否具有相同的元素,而不管顺序如何?

toofly:

很抱歉这个简单的问题,但是我很难找到答案。

当我比较两个列表时,我想知道它们是否“相等”,因为它们具有相同的内容,但是顺序不同。

例如:

x = ['a', 'b']
y = ['b', 'a']

我想x == y评估True

phihag:

您可以简单地检查带有x和y元素的多重集是否相等:

import collections
collections.Counter(x) == collections.Counter(y)

这要求元素是可散列的。运行时将位于中O(n)n列表的大小哪里

如果元素也是唯一的,则还可以转换为集合(相同的渐近运行时,在实践中可能会快一点):

set(x) == set(y)

如果元素不是可哈希的而是可排序的,则另一个替代方法(在中的运行时O(n log n))是

sorted(x) == sorted(y)

如果元素既不可散列也不可排序,则可以使用以下帮助函数。请注意,这将非常慢(O(n²)),并且通常不应不可哈希和不可排序元素的神秘情况之外使用。

def equal_ignore_order(a, b):
    """ Use only when elements are neither hashable nor sortable! """
    unmatched = list(b)
    for element in a:
        try:
            unmatched.remove(element)
        except ValueError:
            return False
    return not unmatched

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

确定2个列表是否具有相同的元素,而不管顺序如何?

如何将4位数字变量与4位数字列表进行比较,并确定它们是否具有完全相同的数字,而不管顺序如何?

如何确定列表是否至少有一个相同的元素

有没有一种方法可以确定列表的元素是否与另一个列表(具有相同索引)的元素匹配?

Prolog检查2个列表是否具有相同数量的元素

检查两个列表中是否具有相同的元素,并且顺序相同,但是在Python中具有其他起点

如何检查嵌套列表的两个元素在 Prolog 中是否具有相同的索引?

如何测试列表是否具有相同的元素

确定numpy数组中2个(垂直或水平)相邻元素是否具有相同值的最快方法

如何使列表具有相同的顺序?(蟒蛇)

如何查看数组是否具有2个或更多相同的元素?

如何检查2个列表框是否具有相同的项目集合?

如何以相同的顺序比较两个具有相同元素的JSON对象相等?

确定两个列表中的元素是否相同的有效方法

具有相同“顺序”值的元素是否有效?

检查2个列表是否具有相等的元素Haskell

我如何在Swift中检查两个数组是否包含相同的元素,而不管这些元素出现的顺序如何?

检查列表列表是否具有两个或更多相同的元素

如何检查两个列表中的元素是否相同(顺序已更改)

Python:如何检查带有标题行的两个CSV文件是否包含相同的信息,而不管行和列的顺序如何?

如何匹配2个具有相同索引位置的列表?

在Dart中,如何确定两个实例是否具有相同的类型?

比较两个列表是否基于属性具有相同的元素

如何确定HTML元素是否具有伪元素?

如何在O(1)或O(log n)时间复杂度中检查2个c ++数组是否相同(所有元素都相同,所以顺序很重要)?

即使标签具有不同的值,如何确定两个XML文件是否具有相同的结构?

查找2个向量是否具有4个连续的相同元素

编写函数,用于检查列表是否具有相同的元素

如何检查1列表中的所有元素是否都在*相同数量*中且以任何顺序在list2中?