首页 > 后端开发 > Python教程 > 如何有效比较不可哈希对象的无序列表?

如何有效比较不可哈希对象的无序列表?

Mary-Kate Olsen
发布: 2024-11-15 02:38:02
原创
1027 人浏览过

How to Efficiently Compare Unordered Lists of Non-Hashable Objects?

有效比较不可哈希对象的无序列表

无序列表(不是集合)在比较它们的相等性时提出了挑战,因为它们的元素可以按任意顺序排列。在处理不可散列的对象(例如用户定义类的实例)时,这种困难变得更加明显。

为了促进这种比较,存在具有不同时间复杂度的各种方法:

O(n)

对于可哈希对象,Counter 提供了最佳的解决方案:

def compare(s, t):
    return Counter(s) == Counter(t)
登录后复制

O(n log n)

如果对象是可排序的,sorted提供了合适的替代方案:

def compare(s, t):
    return sorted(s) == sorted(t)
登录后复制

O(n * n)

当哈希性和可排序性都不可用时,可以采用使用相等性的直接方法:

def compare(s, t):
    t = list(t)   # make a mutable copy
    try:
        for elem in s:
            t.remove(elem)
    except ValueError:
        return False
    return not t
登录后复制

通过根据对象的性质选择适当的解决方案,即使元素不可散列或不可排序,您也可以有效地比较无序列表。

以上是如何有效比较不可哈希对象的无序列表?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板