Я пытаюсь найти способ использовать один список для фильтрации элементов другого.
Вроде как синтаксис пересечения, но полная противоположность
lst = [0,1,2,6] secondlst = [0,1,2,3,4,5,6]
ожидаемый результат
[3,4,5]
Простой способ:
r = [v for v in secondlst if v not in lst]
или
list(set(secondlst).difference(lst))
Вы можете использовать filter
filter
filter(lambda x: x not in lst, secondlst)
Смотрите не дальше, чем set () 'Python типа.
>>> lst = [0,1,2,6] >>> secondlst = [0,1,2,3,4,5,6] >>> set(lst).symmetric_difference(set(secondlst)) set([3, 4, 5])
Simple:
outcome = [x for x in secondlst if x not in lst]
Сложнее, но быстрее, если lst велико:
lstSet = set(lst) outcome = [x for x in secondlst if x not in lstSet]