Форум сайта python.su
0
Как из одного списка удалить все элементы которые есть в другом списке?
l1 = [1, 2, 3] l2 = [2] # сложение списков работает l3 = l1 + l2 print l3 # а это не работает :( l3 = l1 - l2 print l3
Офлайн
16
l3 = list(set(l1).difference(l2))
Офлайн
>>> lst1 = range(10) >>> lst2 = [1, 1, 4, 5] >>> col = set(lst2) >>> lst1 = [i for i in lst1 if i not in col] >>> lst1 [0, 2, 3, 6, 7, 8, 9] >>>
Офлайн
0
dimy44
это на тот случай, если важно сохранить последовательность элементов уменьшаемого списка.
GaiveR
l3 = list(set(l1).difference(l2))
Офлайн
Это уж как карта ляжет.
>>> lst1 = [1, 5, 1, 3, 4, 2, 6]
>>> lst2 = [1, 2]
>>> list(set(lst1).difference(lst2))
[3, 4, 5, 6]
>>>
Офлайн
И да, забыл еще указать, что если у Вас в списке будут повторяющиеся элементы, которые не нужно вычитать, то даже если предположить, что очередность не важна, все-равно set испортит Ваш список, т.к. уберет дублирующие элементы.
Офлайн
0
s =
n =
l =
for i in s:
if i not in n: l.append(i)
print(l)
Офлайн