我尝试执行与此link类似的操作,但使用列表列表。但是,执行以下操作会给我一个TypeError。
list1 = [[a,a], [b,b], [c,c]]
list2 = [[c,c], [d,d], [e,e]]
same = set(list1) & set(list2)
我也试图找到:
different = not set(list1) & set(list2)
答案 0 :(得分:0)
列表不是可清除类型,因此它们不能放入集合,但元组可以。您可以使用tuple(mylist)
将列表转换为元组。以下代码假定a,b,c,d和e是可散列类型。
list1 = [(a,a), (b,b), (c,c)]
list2 = [(c,c), (d,d), (e,e)]
same = set(list1) & set(list2)
答案 1 :(得分:0)
如果您只是使用列表理解,它会更具可读性和更易理解。
def seperate(*ls):
sim, diff = []
for l in ls:
sim.extend([ x for x in l if x not in sim ])
diff.extend([ x for x in l if x not in sim ])
return sim, diff