我正在尝试创建一个函数:
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]
答案 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)]