Удаление значений из списка

Допустим, есть два списка со значениями:

X = 'something'
Y = 123
List1 = [1,"big","small",X,Y]
List2 = [1,X,Y]

result = ["big","small"]

Какой метод использовать, чтобы получить этот результат?


Ответы (1 шт):

Автор решения: CrazyElf

Если порядок следования элементов не важен, то можно просто вычесть множества, это будет сложность O(n):

X = 'something'
Y = 123
List1 = [1,"big","small",X,Y]
List2 = [1,X,Y]
result = list(set(List1) - set(List2))
print(result)

Если же порядок элементов нужно сохранить, то можно так, хотя это и менее оптимально - сложность O(n2):

result = [x for x in List1 if x not in List2]

Впрочем, этот вариант тоже можно ускорить до O(n):

Set2 = set(List2)
result = [x for x in List1 if x not in Set2]
→ Ссылка