【发布时间】:2019-07-01 01:45:25
【问题描述】:
我知道如果我有两个列表,比如整数,我可以简单地使用list(set(list1) & set(list2)) 来获得交集。但是,在我的两个列表中,我有可变对象,即Nodes。 Node是一个可以用值初始化的类。
无需执行双 for 循环,有没有办法根据它们的 id 获取两个列表的交集?我正在寻找类似于list(set(list1) & set(list2)) 的东西。
更新:我指的是 Python 中内置的 id() 函数,它返回对象在内存中的存储地址。
所以,我在问 [Node1, Node2, Node3] 和 [Node100, Node2, Node3] 的交集是什么。显然我不能使用上面的设置交集方法。我需要通过访问内存来识别它们是否相同。如果我不能尝试根据它们的 value 属性来识别它们,因为它们可能 Node1 可能与 Node100 具有相同的值,但它们不是内存中的相同对象。
【问题讨论】:
-
“基于他们的 id”是什么意思? id 是
Node对象的属性吗? -
“id”是指对可能同时出现在
list1和list2中的相同对象的引用吗? -
@Primusa。你为什么删除你的答案?
-
@MadPhysicist Philip 有一个更好的答案。我没有必要跟上我的;我赞成他的回答并继续前进。
-
确定我不清楚:如果它们在内存中不是同一个对象,您是否希望在最终列表中保留两个具有相同值的节点?
标签: python