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