有效比較不可哈希物件的無序列表
無序列表(不是集合)在比較它們的相等性時提出了挑戰,因為它們的元素可以按任意順序排列。在處理不可散列的物件(例如使用者定義類別的實例)時,這種困難變得更加明顯。
為了促進這種比較,存在具有不同時間複雜度的各種方法:
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中文網其他相關文章!