Python:创建过滤器函数

时间:2011-11-18 01:53:17

标签: python list function

我正在尝试创建一个函数:

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]

4 个答案:

答案 0 :(得分: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,因为它与上面使用的内置函数名称相同

答案 1 :(得分:0)

我喜欢ÓscarLópez的答案,但你也应该学习使用现有的Python filter 功能:

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

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

答案 2 :(得分:0)

自定义过滤器功能

def my_filter(func,sequence):
    res=[]
    for variable in sequence :
        if func(variable):
            res.append(variable)
    return res

def is_even(item):
    if item%2==0 :
        return True
    else :
        return False



seq=[1,2,3,4,5,6,7,8,9,10]
print(my_filter(is_even,seq))

答案 3 :(得分:0)

Python中的自定义过滤器功能:

def myfilter(fun, data):
    return [i for i in data if fun(i)]