Найти - Пользователи
Полная версия: Вычитание списков?
Начало » Python для новичков » Вычитание списков?
1
tfox
Как из одного списка удалить все элементы которые есть в другом списке?

l1 = [1, 2, 3]
l2 = [2]
# сложение списков работает
l3 = l1  + l2
print l3
# а это не работает :(
l3 = l1  - l2
print l3
GaiveR
l3 = list(set(l1).difference(l2))
dimy44
>>> 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
dimy44
это на тот случай, если важно сохранить последовательность элементов уменьшаемого списка.

Да. Мне важно сохранить последовательность элементов уменьшаемого списка.
Это выражение тоже сохраняет элементы в том же порядке как они и были:
GaiveR
l3 = list(set(l1).difference(l2))

Спасибо.
dimy44
Это уж как карта ляжет.
>>> lst1 = [1, 5, 1, 3, 4, 2, 6]
>>> lst2 = [1, 2]
>>> list(set(lst1).difference(lst2))
[3, 4, 5, 6]
>>>
dimy44
И да, забыл еще указать, что если у Вас в списке будут повторяющиеся элементы, которые не нужно вычитать, то даже если предположить, что очередность не важна, все-равно set испортит Ваш список, т.к. уберет дублирующие элементы.
Tempys
s =
n =
l =

for i in s:
if i not in n: l.append(i)
print(l)
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB