Уведомления

Группа в Telegram: @pythonsu

#1 Окт. 24, 2012 11:21:01

tfox
Зарегистрирован: 2012-04-13
Сообщения: 55
Репутация: +  0  -
Профиль   Отправить e-mail  

Вычитание списков?

Как из одного списка удалить все элементы которые есть в другом списке?

l1 = [1, 2, 3]
l2 = [2]
# сложение списков работает
l3 = l1  + l2
print l3
# а это не работает :(
l3 = l1  - l2
print l3

Офлайн

#2 Окт. 24, 2012 11:29:09

GaiveR
От:
Зарегистрирован: 2011-08-13
Сообщения: 122
Репутация: +  16  -
Профиль   Отправить e-mail  

Вычитание списков?

l3 = list(set(l1).difference(l2))



Офлайн

#3 Окт. 24, 2012 12:17:52

dimy44
От: Евпатория
Зарегистрирован: 2012-04-21
Сообщения: 463
Репутация: +  42  -
Профиль  

Вычитание списков?

>>> 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]
>>> 
это на тот случай, если важно сохранить последовательность элементов уменьшаемого списка.

Офлайн

#4 Окт. 24, 2012 14:14:04

tfox
Зарегистрирован: 2012-04-13
Сообщения: 55
Репутация: +  0  -
Профиль   Отправить e-mail  

Вычитание списков?

dimy44
это на тот случай, если важно сохранить последовательность элементов уменьшаемого списка.

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

Спасибо.

Офлайн

#5 Окт. 24, 2012 15:01:03

dimy44
От: Евпатория
Зарегистрирован: 2012-04-21
Сообщения: 463
Репутация: +  42  -
Профиль  

Вычитание списков?

Это уж как карта ляжет.

>>> lst1 = [1, 5, 1, 3, 4, 2, 6]
>>> lst2 = [1, 2]
>>> list(set(lst1).difference(lst2))
[3, 4, 5, 6]
>>>

Офлайн

#6 Окт. 24, 2012 16:33:38

dimy44
От: Евпатория
Зарегистрирован: 2012-04-21
Сообщения: 463
Репутация: +  42  -
Профиль  

Вычитание списков?

И да, забыл еще указать, что если у Вас в списке будут повторяющиеся элементы, которые не нужно вычитать, то даже если предположить, что очередность не важна, все-равно set испортит Ваш список, т.к. уберет дублирующие элементы.

Офлайн

#7 Окт. 27, 2012 23:29:58

Tempys
Зарегистрирован: 2012-10-27
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

Вычитание списков?

s =
n =
l =

for i in s:
if i not in n: l.append(i)
print(l)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version