a = [1, 2, 3, 1, 2, 3] b = [3, 2, 1, 3, 2, 1]
a和b应该视为相等,因为它们具有完全相同的元素,只是顺序不同。
问题是,我的实际列表将由对象(我的类实例)组成,而不是整数。
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