2017-01-06 83 views
-3

我列出的两个列表:如何从一个列表中删除不包含在另一个列表中的元素?

arr1 = [[1,2,3], 
     [2,5,1,1], 
     [3,1,1]] 

arr2 = [[2,3,6,1], 
     [8,1,3], 
     [5,5,6]] 

我需要检查从ARR2元素不包含在ARR1和删除ARR2这些元素。

那么结果必然是:

arr2 = [[2,3,1], 
     [1,3], 
     [5,5]] 

6,8不包含在ARR1,所以它在ARR2删除。

如何做到这一点?

+0

尝试搜索 “名单交集” - E,G,http://stackoverflow.com/questions/642763/python-intersection-of-two-lists – DNA

+0

连'7'不在'arr1'中,它是如何出现在'arr2'中的?请[编辑]你的文章并添加[mcve]。见[问]。 –

回答

1
arr1 = [[1, 2, 3], 
     [2, 5, 1, 1], 
     [3, 1, 1]] 

arr2 = [[2, 3, 6, 1], 
     [8, 1, 3], 
     [7, 5, 6]] 

set1 = set(sum(arr1, [])) 
print('Elements found in arr1:') 
print(set1) 

arr3 = [[x for x in sub if x in set1] 
     for sub in arr2] 

print('Sublists of arr3:') 
for sub in arr3: 
    print(sub) 

输出:

Elements found in arr1: 
set([1, 2, 3, 5]) 
Sublists of arr3: 
[2, 3, 1] 
[1, 3] 
[5] 
相关问题