Фильтры Python 2 Списка - PullRequest
       11

Фильтры Python 2 Списка

2 голосов
/ 23 ноября 2011

Я пытаюсь найти способ использовать один список для фильтрации элементов другого.

Вроде как синтаксис пересечения, но полная противоположность

lst = [0,1,2,6]

secondlst = [0,1,2,3,4,5,6]

ожидаемый результат

[3,4,5]

Ответы [ 4 ]

12 голосов
/ 23 ноября 2011

Простой способ:

r = [v for v in secondlst if v not in lst]

или

list(set(secondlst).difference(lst))
2 голосов
/ 23 ноября 2011

Вы можете использовать filter

filter(lambda x: x not in lst, secondlst)
2 голосов
/ 23 ноября 2011

Смотрите не дальше, чем 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])
1 голос
/ 23 ноября 2011

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]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...