Python 递归 no 'in' 解决方法

标签 python list recursion

所以我的递归函数太在列表中查找,看看某个项目是否已在列表中重复。前任。 L = [1,2,3,4,3] 返回 True。我已经完成了它,但我不允许使用“in”函数,但不知道解决方法。

编辑:我唯一可以使用的内置函数是lenindex和splice运算符。

def has_repeats(L):
    if L == []:
        return False
    elif L[0] in L[1:]:
        return True
    else:
        return has_repeats(L[1:])
    return False

最佳答案

您可以考虑使用递归以相反的顺序比较列表,使它们的索引相同,因为默认情况下 index 返回第一个匹配项,如下所示:

def has_repeats(L):
    if len(L) <= 1:
        return False
    if L.index(L[-1]) != len(L) - 1:
        return True
    return has_repeats(L[:-1])

用法:

has_repeats([1, 2, 3, 4, 3])
True

has_repeats([1, 2, 3, 4, 0])
False

因此,基本上检查最后一项的索引 len(L) - 1 将与 L.index 相同,如果不这样做,则应返回第一个匹配项t 匹配,最后一项之前有重复项,并递归执行。

关于Python 递归 no 'in' 解决方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29178905/

相关文章:

C# 列表重复项

javascript - 使用带有 while 循环的递归的奇怪结果

c - 为什么这个递归代码会抛出段错误?

python - 使用 python 保存 Outlook 附件

python - 如何更改文件夹中文件的某些字符

python - 如何反转字典或列表中的值?

string - 检测prolog中字符串的所有k个长度的单词

Python 3 按与特定模式匹配的名称过滤目录

python - Django - 如何在不包含 URL 前缀的情况下渲染 View ?

java - 如何在第一个列表中按另一个列表对一个列表进行排序?