尝试编写递归程序从列表中删除一个单词

2024-04-20 09:38:51 发布

您现在位置:Python中文网/ 问答频道 /正文

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()

这是我的密码。我不确定这有什么问题。有一个错误说索引超出范围,我相信这与我的第三行有关,但我不知道如何修复它。你知道吗


Tags: 密码returnifmaindef错误elseremove
2条回答

我认为你的问题是你从不测试列表是否为空。由于您不断删除第一个元素,最终将不会有任何元素剩余,并且alist[0]将是一个超出范围的索引。如果你加上

if not alist:
    return []

到了山顶,我打赌你一定会好起来的。你知道吗

正确,这行:

if alist[0] == word:

正在尝试将alist中的第一项与word进行比较,但alist没有项。你知道吗

相关问题 更多 >