2011-11-18 68 views
2

我试图创建一个函数:的Python:创建一个过滤功能

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]

+1

http://stackoverflow.com/questions/1157106/remove-all-occurences-of-a-value-from-a-python-list – Chad

+1

我建议为你的功能选择一个不同的名字。有一个内置的“过滤器”功能,你会掩盖它。 – Avaris

+0

我称为我的功能“过滤器”的原因是在本指导 – HighAllegiant

回答

8

尝试使用列表理解:

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

+1的指导者的要求。我只补充说,不要使用'filter'作为名称,因为它已经是内置的了。 –

+0

感谢您的答案。 而我叫我的功能“过滤器”的原因是在我的指导员在这项任务的要求。 – HighAllegiant

+1

HighAllegiant:在这些情况下,**请**添加Homework标签到您的问题。绝对无益地给你答案。 –

0

我喜欢奥斯卡·洛佩斯的答案所使用的内置函数名称相同,但你也应该学会使用现有的Python filter功能:

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

>>> myfilter(1, [1,2,1]) 
[2]