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

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

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-11-15 02:38:021044浏览

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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn