Я пытаюсь удалить все внешние элементы списка, которые содержатся во втором списке, сохраняя при этом те, которые могут быть «зажаты» внутри. Я знаю, как взять дополнение к пересечению двух наборов, но здесь я просто хочу удалить все начальные и конечные элементы. До сих пор я придумал в следующем, но он чувствует себя неуклюжим:Снять внешние элементы из списка, которые содержатся в другом списке
def strip_list(l, to_remove):
while l[0] in to_remove:
l.pop(0)
while l and l[-1] in to_remove:
l.pop(-1)
return l
mylist = ['one', 'two', 'yellow', 'one', 'blue', 'three', 'four']
nums = ['one', 'two', 'three', 'four']
strip_list(mylist, nums)
# > ['yellow', 'one', 'blue']
'набор (my_list) - набор (НУМС)'? – sytech
@sytech, который удалил бы также дубликаты, которые должны быть оставлены – Uriel
Возможный дубликат [Удалить все элементы, которые происходят в одном списке от другого] (http://stackoverflow.com/questions/4211209/remove-all-the-elements- что-происходит-в-одном-list-from-another) – damores