首頁 > 後端開發 > Python教學 > 如何有效比較不可哈希物件的無序列表?

如何有效比較不可哈希物件的無序列表?

Mary-Kate Olsen
發布: 2024-11-15 02:38:02
原創
1051 人瀏覽過

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
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板