2017-01-06 2 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

Попробуйте найти "список пересечения" - е, г, http://stackoverflow.com/questions/642763/python-intersection-of-two-lists – DNA

+0

Даже '7' не находится в' arr1', как он присутствует в 'arr2'? Пожалуйста, отредактируйте свое сообщение и добавьте [mcve]. См. [Ask]. –

ответ

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] 
Смежные вопросы