python - Python,高阶函数,范围问题,我不能在返回列表之前重置它
问题描述
我正在尝试设计一个抽象函数,该函数根据谓词过滤通用类型 X (listofX) 的列表,并将该谓词作为函数 (fn) 传递
当我第一次调用我的函数时,它会按照我的意图成功, 但之后它会保留答案并附加在它上面。
def positive(x):
return x>0
def negative(x):
return x<0
#PROBLEM# i CAN NOT reset filtered_list
def filter2(fn, listofX, i=0, filtered_list = []):
if i == len(listofX)-1:
return filtered_list
if fn(listofX[i]):
filtered_list.append(listofX[i])
i += 1
return filter2(fn, listofX, i)
numbers = [3 ,-2, -8, 4, -1, 2, 0]
print(filter2(positive, numbers)) #[3, 4, 2]
print(filter2(negative, numbers)) #[3, 4, 2, -2, -8, -1]
我尝试解决的一种方法是每次从 i=0 重新开始,我重置列表但它对我不起作用:
def filter2(fn, listofX, i=0, filtered_list = []):
if i == 0:
filtered_list = []
if i == len(listofX)-1:
return filtered_list
if listofX[i] > 0:
filtered_list.append(listofX[i])
i += 1
return filter2(fn, listofX, i)
numbers = [3 ,-2, -8, 4, -1, 2, 0]
print(filter2(positive, numbers)) #[3, 4, 2]
print(filter2(negative, numbers)) #[3, 4, 2, -2, -8, -1]
有什么帮助吗?我想在这里处理什么概念?