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

时间:2015-03-18 20:52:34

标签: 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()

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

2 个答案:

答案 0 :(得分:6)

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

if not alist:
    return []

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

答案 1 :(得分:2)

正确,这一行:

if alist[0] == word:

尝试将alist中的第一项与word进行比较,但alist没有项目。