使用递归python在列表中查找项目

时间:2018-07-29 19:14:11

标签: python

使用递归来编写包含包含列表 seq 和值项的函数。如果 item seq 的元素,则函数应该产生 True ,否则,将产生 False 。序列中的项目可以是任何类型的数据,即。浮动,列表/数组,元组等。

到目前为止,我已经拥有了:

def contains (seq, item):
    if len(seq) == 0:
        return True
    elif len(seq) == 1 and (seq[0] == item):
        return True 
    else:
        if (seq[0] == item):
            return contains(seq [1:], item)
        else:
            return False


print (contains([10, 12, 13, 14 ], 10))

1 个答案:

答案 0 :(得分:1)

您在这里的逻辑大部分是后退的,但不是完全倒退的。

首先,对于一个空列表,您将返回True。这是错误的-空列表不包含任何内容,因此它不包含item

接下来,对于唯一元素为item的size-1列表,返回True。没错可能不是必要的测试,但正确。

接下来,如果第一个元素是item,则检查列表的其余部分。这是错误的-包含item的列表以及包含item的其他内容。

最后,对于其他任何内容(第一个元素不是item的多元素列表),您将返回False。这是错误的-包含一堆东西的列表,其中一些不是item,可能仍然包含item。在这里,您需要检查列表的其余部分。

如果您以正确的逻辑将错误的逻辑转换为代码,则代码将起作用。