首页 > 解决方案 > 比较两个列表列表,在保持结构的同时只保留匹配的元素

问题描述

给定以下两个嵌套列表:

alist = [[1,4,10,2], [4,1,12,10], [5,12,4,10], [5,10,2,4]]

blist = [[2,4,10,9,13,20], [12,9,20,33,Not,15], [3,1,2,7,4,8], [Not,9,8,3,4,5]]

我试图在保持列表结构的同时逐个列表比较两个列表,并且只保留这样的匹配项:

newlist= [[4,10,2], [12], [4], [5,4]]

在此先感谢您的帮助!

标签: python-3.xstringlist

解决方案


您可以使用set.intersection()文档):

Not = object()

alist = [[1,4,10,2], [4,1,12,10], [5,12,4,10], [5,10,2,4]]

blist = [[2,4,10,9,13,20], [12,9,20,33,Not,15], [3,1,2,7,4,8], [Not,9,8,3,4,5]]

new_list = [list(set(i).intersection(j)) for i, j in zip(alist, blist)]
print(new_list)

印刷:

[[2, 10, 4], [12], [4], [4, 5]]

推荐阅读