尝试创建一个从列表中删除单词的递归程序

Dea*_*ell 2 python recursion

def main():

    def remove(alist,word):
        if alist[0] == word:
            return remove(alist[1:],word)
        else:
            return [alist[0]] + remove(alist[1:],word)

    list1 = ['dog','cat','horse','dog','cat','horse']

    print(remove(list1,'dog'))

main()
Run Code Online (Sandbox Code Playgroud)

这是我的代码.我不确定它有什么问题.有一个错误,指出索引超出范围我认为与我的第三行有关,但我不知道如何解决它.

Eri*_*ouf 6

我认为你的问题是你永远不会测试alist是否为空.由于你继续删除第一个元素,最终不会有任何元素,alist [0]将是一个超出范围的索引.如果你只是添加

if not alist:
    return []
Run Code Online (Sandbox Code Playgroud)

在删除的顶部,我打赌你会处于良好的状态.