Python 递归,为什么我的函数不起作用?

标签 python python-3.x

我正在尝试编写一个 Python 3 递归函数,它会告诉我一个整数是否在嵌套列表中。我不确定如何让我的代码在列表中找到它时返回 True,如果在列表中找不到它则返回 False。当我打印 for 循环的结果时,我得到了一堆

false
false
false
false
true
false
false
false

等但是,它返回 False 因为最后一次调用是 false,即使我希望它返回 true。我该如何解决这个问题?

这是我的代码:

def nestedListContains(NL, target):    
    if( isinstance(NL, int) ):
        return NL    

    for i in range(0, len(NL)):
       return ( nestedListContains(NL[i], target) == target )

    return False

我是这样调用它的

print(nestedListContains([[3], [4,5,7], [[[8]]]], 8))

编辑:这似乎对我有用,但似乎相当贫民窟:

def nestedListContains(NL, target):    
    if( isinstance(NL, int) ):
        if( NL == target ):
            return 1
        return 0

    x = 0

    for n in NL:
        x += nestedListContains(n, target) == 1        

    return x != 0

最佳答案

我的尝试:

def contains(lst, target):
    if isinstance(lst, int):
        return lst == target

    return any(contains(x, target) for x in lst)

关于Python 递归,为什么我的函数不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16090786/

相关文章:

python - 使用变量作为类的属性

python - sendfile() 失败 (32 : Broken pipe) while sending request to upstream nginx 502

python-3.x - 使用 python 宏发送键盘/鼠标输入保持目标窗口背景

python - 如何计算在 Pandas 中共享唯一字段的行

python - 我如何在 OpenCascade 中获取实际的地形数据?

python - 使用 Python 和 Tkinter 的傅里叶级数/变换中的 Missalgined 圆

python - 导入错误: No module named 'pkg_resources.extern.six.moves' ; 'pkg_resources.extern.six' is not a package

python-3.x - 语音事件检测

python - 从十六进制到有符号整数的转换不起作用

Python 修剪/过滤掉点