亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

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 關注
  • 147 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號