tfox
Окт. 24, 2012 11:21:01
Как из одного списка удалить все элементы которые есть в другом списке?
l1 = [1, 2, 3]
l2 = [2]
# сложение списков работает
l3 = l1 + l2
print l3
# а это не работает :(
l3 = l1 - l2
print l3
GaiveR
Окт. 24, 2012 11:29:09
l3 = list(set(l1).difference(l2))
dimy44
Окт. 24, 2012 12:17:52
>>> 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]
>>>
это на тот случай, если важно сохранить последовательность элементов уменьшаемого списка.
tfox
Окт. 24, 2012 14:14:04
dimy44
это на тот случай, если важно сохранить последовательность элементов уменьшаемого списка.
Да. Мне важно сохранить последовательность элементов уменьшаемого списка.
Это выражение тоже сохраняет элементы в том же порядке как они и были:
GaiveR
l3 = list(set(l1).difference(l2))
Спасибо.
dimy44
Окт. 24, 2012 16:33:38
И да, забыл еще указать, что если у Вас в списке будут повторяющиеся элементы, которые не нужно вычитать, то даже если предположить, что очередность не важна, все-равно set испортит Ваш список, т.к. уберет дублирующие элементы.
Tempys
Окт. 27, 2012 23:29:58
s =
n =
l =
for i in s:
if i not in n: l.append(i)
print(l)