如何在Python中有效比较两个无序列表(不是集合)?
a = [1, 2, 3, 1, 2, 3]b = [3, 2, 1, 3, 2, 1]
a和b应该被视为相等,因为它们具有完全相同的元素,只是顺序不同。
问题是,我的实际列表将由对象(我的类实例)组成,而不是整数。
回答:
:最好使用Counter()方法(如果你的对象是可哈希的):
def compare(s, t): return Counter(s) == Counter(t)
方法次之(如果你的对象是可排序的):
def compare(s, t): return sorted(s) == sorted(t)
:如果对象既不可散列也不可排序,则可以使用相等性:
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
以上是 如何在Python中有效比较两个无序列表(不是集合)? 的全部内容, 来源链接: utcz.com/qa/426623.html