Python: создание функции фильтра - PullRequest
2 голосов
/ 18 ноября 2011

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

filter(delete,lst) 

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

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

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

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

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]

Ответы [ 2 ]

8 голосов
/ 18 ноября 2011

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

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 для вашей функции, поскольку это то же имя, что и встроенная функция, использованная выше

0 голосов
/ 18 ноября 2011

Мне нравится ответ Оскара Лопеса, но вы также должны научиться использовать существующий фильтр Python :

>>> def myfilter(tgt, seq):
        return filter(lambda x: x!=tgt, seq)

>>> myfilter(1, [1,2,1])
[2]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...