You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python中使用对象的equals()方法正确比较含重复元素的无序对象列表

如何在Python中使用对象的equals()方法正确比较含重复元素的无序对象列表

我现在有个自带.equals()方法的类,想要写个函数判断两个无序的该类对象列表是否不相等(不相等返回True,相等返回False)。

最开始我写了这么个嵌套循环的实现:

def objectListsNotEqual(list_1, list_2):
    if(len(list_1) != len(list_2)):
        return True

    # 长度相同,开始逐一检查
    for obj_1 in list_1:
        if(not(any(obj_1.equals(obj_2) for obj_2 in list_2))):
            return True

    for obj_2 in list_2:
        if(not(any(obj_2.equals(obj_1) for obj_1 in list_1))):
            return True

    # 执行到这一步说明两个列表完全匹配
    return False

但这个实现有个大问题:它没法处理两个列表中,被.equals()判定为相等的对象数量不一致的情况。举个具体的例子:

list_1 = [obj_1(foo), obj_2(foo), obj_3(bar)]
list_2 = [obj_4(foo), obj_5(bar), obj_6(bar)]

objectListsNotEqual(list_1, list_2) # 因为用了any(),现在错误地返回False

在这个例子里,list_1里有2个匹配foo的对象、1个匹配bar的对象;list_2里是1个foo、2个bar,明显两个列表不相等。我希望这个函数能返回True(符合“列表不相等”的判断),但现在它错误地返回了False——原因就是any()只要找到一个匹配就会返回True,完全没考虑相同匹配结果的对象数量差异。

补充说明:我用到的类是Polyline,基于Geometry对象实现的,不太清楚它的内部逻辑。

备注:内容来源于stack exchange,提问作者sushi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.13 18:59:31