为了账号安全,请及时绑定邮箱和手机立即绑定

Python 搜索嵌套列表时出现意外行为

Python 搜索嵌套列表时出现意外行为

qq_遁去的一_1 2023-07-11 14:26:15
我正在尝试编写一个递归算法,在嵌套数组中搜索整数。这就是我目前的代码,我添加了 print 语句来查看它每次迭代的作用。输出显示它应该True在某个时刻返回,即使它没有返回。def nestedListContains(lst, n):    for i in lst:        print(f'i: {i}, n: {n}')        if type(i) == list:            nestedListContains(i, n)        elif int(i) == int(n):            return True    return Falseprint(nestedListContains([1, [2, [3], 4]], 3)) # Should return Trueprint(nestedListContains([1, [2, [3], 4]], 5)) # Should return False输出:i: 1, n: 3i: [2, [3], 4], n: 3i: 2, n: 3i: [3], n: 3i: 3, n: 3 # This iteration should return True!i: 4, n: 3Falsei: 1, n: 5i: [2, [3], 4], n: 5i: 2, n: 5i: [3], n: 5i: 3, n: 5i: 4, n: 5False
查看完整描述

2 回答

?
qq_花开花谢_0

TA贡献1835条经验 获得超7个赞

当您调用递归函数时,您缺少 a ,return因为这将是返回的函数True


def nestedListContains(lst, n):

    for i in lst:

        print(f'i: {i}, n: {n}')

        if type(i) == list:

            return nestedListContains(i, n)

        elif int(i) == int(n):

            return True

    return False



print(nestedListContains([1, [2, [3], 4]], 3))  # True

print(nestedListContains([1, [2, [3], 4]], 5))  # False


查看完整回答
反对 回复 2023-07-11
?
holdtom

TA贡献1805条经验 获得超10个赞

您需要返回调用的值nestedListContains(i, n),否则返回的值将被丢弃,并且循环将继续,直到return False到达:


def nestedListContains(lst, n):

    for i in lst:

        print(f'i: {i}, n: {n}')

        if type(i) == list:

            return nestedListContains(i, n)

        elif int(i) == int(n):

            return True

    return False


查看完整回答
反对 回复 2023-07-11
  • 2 回答
  • 0 关注
  • 109 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信