比较Python中的两个列表列表,找出具有相同索引的列表之间的差异

时间:2017-02-01 00:29:13

标签: python list

例如,如果我们有

ListofLists1 = [[0], [0], [1, 3], [1, 4], []] 

ListofLists2 = [[0, 2], [0, 1, 2, 3], [1, 3, 4], [1, 3, 4], [0, 1, 3]] 

我们定义

Diff = ListofLists2 - ListofLists1

我希望以下列形式输出

Diff = [[2], [1,2,3], [4], [3], [0,1,3]]

对于我正在进行的特定类型的工作,我总是希望在ListofLists1中的相应(相同索引)列表中包含ListofLists1内的任何列表中找到所有元素。但是,ListofLists2中的列表可能包含ListofLists1中相应列表中不存在的元素。

2 个答案:

答案 0 :(得分:3)

将两个列表拼接在一起,作为列表推导的一部分迭代它们,并在每种情况下找到设置的对称差异,将每个结果集设置为列表类型:

ListofLists1 = [[0], [0], [1, 3], [1, 4], []] 
ListofLists2 = [[0, 2], [0, 1, 2, 3], [1, 3, 4], [1, 3, 4], [0, 1, 3]]

[list(set(l1).symmetric_difference(l2)) for l1,l2 in zip(ListofLists1,ListofLists2)]

给出:

[[2], [1, 2, 3], [4], [3], [0, 1, 3]]

答案 1 :(得分:0)

另一种解决方案刚刚袭击了我的大脑。

怎么样?
Diff = map( lambda x,y: list(set(x) - set(y)), ListofLists2, ListofLists1 )

这也会返回

Diff = [[2], [1,2,3], [4], [3], [0,1,3]]

ListofLists1 = [[0], [0], [1, 3], [1, 4], []] 
ListofLists2 = [[0, 2], [0, 1, 2, 3], [1, 3, 4], [1, 3, 4], [0, 1, 3]]  

有关此方法与psychemedia答案的比较的任何想法(就长度通常为数百万的列表的实施速度而言)?

相关问题