Python递归检查重复

2024-04-19 19:53:06 发布

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

我有一个任务我已经坚持了几天了。我必须递归地判断列表是否有重复,但除了len()之外,我不能使用任何循环或内置函数。我也不允许使用“in”函数。如果列表L有重复,则返回True,否则返回False。这就是我所能想到的:

def has_repeats(L):
    if len(L) <= 1:
        return False
    elif L[0] == L[1]:
        return True
    else: return has_repeats(L[0] + L[2:])

但问题是它只是比较第一个元素和其余元素,而不是将每个元素与其余元素进行比较。如果没有跑步机什么的,我想不出怎么做。有什么建议吗?在


Tags: 函数infalsetrue元素列表lenreturn
2条回答

你几乎得到了。除了检查列表中的第一个元素和其余元素外,还需要用同样的方法检查第二个

def has_repeats(L):
    if len(L) <= 1:
        return False
    if L[0] == L[1]:
        return True
    if has_repeats([L[0]] + L[2:]):
        return True
    if has_repeats(L[1:]):
        return True
    return False

也可以将其压缩为以下表示形式:

^{pr2}$

使用辅助函数:

 def helper(ele, rest):
    if not rest:
        return False
    return ele == rest[0] or helper(ele, l[1:])

def has_repeats(l):
    if not l:
        return False
    return helper(l[0], l[1:]) or has_repeats(l[1:])

相关问题 更多 >