Python: создание функции фильтра

Я пытаюсь создать функцию:

filter(delete,lst) 

Когда кто-то вводит:

 filter(1,[1,2,1]) 

возвращает [2]

Я придумал использовать функцию list.remove, но удаляет только первый экземпляр delete.

 def filter(delete, lst): """ Removes the value or string of delete from the list lst """ list(lst) lst.remove(delete) print lst 

Мой результат:

 filter(1,[1,2,1]) 

возвращает [2,1]

Попробуйте со списком:

 def filt(delete, lst): return [x for x in lst if x != delete] 

Или, альтернативно, со встроенной функцией фильтрации:

 def filt(delete, lst): return filter(lambda x: x != delete, lst) 

И лучше не использовать filter имен для вашей функции, так как это то же имя, что и встроенная функция, используемая выше

Мне нравится ответ от Óscar López, но вы также должны научиться использовать существующую функцию фильтра Python:

 >>> def myfilter(tgt, seq): return filter(lambda x: x!=tgt, seq) >>> myfilter(1, [1,2,1]) [2]