这是我提出的非递归代码。
def newlst(lst):
new_lst = []
for element in lst:
if element not in new_lst:
new_lst.append(element)
return new_lst
现在这是我对递归版本的尝试:
def newlst(lst):
new_lst = []
if lst == []:
return new_lst
if lst[0] in new_lst:
new_lst.append(lst[0])
else:
return newlst(lst[1:])
我知道每次函数调用自己时我都会将newlst赋值给一个空列表值,我不知道在哪里分配它...所以我迷路了。
答案 0 :(得分:1)
同意这是一种删除重复项的糟糕方法,但如果你真的想要一个递归解决方案:
def newlst(lst):
if not lst:
return lst
new_lst = newlst(lst[1:])
return new_lst if lst[0] in new_lst else [lst[0]] + new_lst
>>> newlst([1,1,2])
[1, 2]
答案 1 :(得分:0)
def newlst(lst):
if lst == []:
new_list = []
elif lst[0] in lst[1:]:
new_list = newlst(lst[1:])
else:
new_list =[lst[0]]+ newlst(lst[1:])
return new_list