當兩個列表都包含非共享列表時,找到2個列表的交集的最有效方法是什麼?2個包含非共享列表的交集
基本上,讓我們說我有以下的列表(我完全彌補):
A = [<foo.bar object at 0x7f267c664080>, <foo.bar object at 0x7f267c664099>]
B = [<foo.bar object at 0x7f267c664080>, <foo.bar object at 0x123456789101>]
我們可以看出,A
的第一個元素是一樣的B
第一要素。
我可以通過for循環創建做簡單的事情:
intersection = []
for obj_a in A:
for obj_b in B:
if ((obj_a == obj_b) and (obj_a not in intersection)):
intersection.extend(obj_a)
,但我只是想知道如果有一個更有效,冷卻器,或簡單的方法。例如,有:
C = [1, 2, 3]
D = [3, 4, 5]
set(C).intersection(set(D))
...但很明顯,我不能使用非hashables set
或frozenset
,因爲我得到
TypeError: unhashable type: foo.bar
有沒有這樣的非hashables什麼?
'intersection = [x for x in A if x in B]'?或者實施'foo.bar'對象的'__hash__'魔術方法,也許? – Delgan