有效比较不可哈希对象的无序列表
无序列表(不是集合)在比较它们的相等性时提出了挑战,因为它们的元素可以按任意顺序排列。在处理不可散列的对象(例如用户定义类的实例)时,这种困难变得更加明显。
为了促进这种比较,存在具有不同时间复杂度的各种方法:
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中文网其他相关文章!