Удалить элементы списка, если есть в другом списке

У меня есть два списка с некоторыми комбинациями чисел, и я хотел бы удалить элемент списка из другого списка.

Я имею в виду, списки могут быть:

X = [1, 2, 3, 128, 129, 134, 135, 136, 145, 146, 156, 164, 234, 235, 236, 245, 246, 266, 345]
Y = [12, 16, 26, 126]

Поэтому я хотел бы удалить из первого списка все элементы, которые включают в себя любой элемент второго списка, поэтому мы удалили бы все элементы, которые содержат «12», «16», «26» или «126».

Завершая список составленным

[1, 2, 3, 134, 135, 136, 145, 146, 156, 234, 235, 236, 245, 246, 256, 345]

Привет и спасибо заранее

Всего 2 ответа


Вы можете использовать понимание списка:

str_y = list(map(str, Y))

X = [e for e in X if all(y not in str(e) for y in str_y)]
X

выход:

[1, 2, 3, 134, 135, 136, 145, 146, 156, 234, 235, 236, 245, 246, 345]

Вы можете попробовать это.

Y=[str(i) for i in Y]
[i for i in X if not any(str(i).__contains__(j) for j in Y)]
# [1, 2, 3, 134, 135, 136, 145, 146, 156, 234, 235, 236, 245, 246, 345]

Есть идеи?

10000