簡體   English   中英

遞歸遍歷python中的列表

[英]Recursively traverse a list in python

在學習練習中,我們被要求遍歷多維列表並在單個函數/ for循環中打印其所有值。

我的大腦一直停留在遞歸函數應該如何工作的基礎上,通過一些在線示例我想出了我應該得到的答案,但它在第一個列表中停止了它找到的值。

我的列車在這里犯了什么錯誤?

def walk(l):
    for v in l:
        if type(v) is list:
            return walk(v)
        else:
            print(v)

l = [

    [1,2,3],
    [4,5,6],
    [7,8,9]
]

walk(l)

>>1
>>2
>>3

刪除return語句,因為它阻止你進入for循環的下一次迭代(當你調用walk(l)時 ,它會檢查第一個子列表並發現它是一個列表然后遇到return,這會停止執行當前函數,所以它不會再進入下一個迭代,但只會執行walk([1,2,3])並打印出結果):

def walk(l):
    for v in l:
        if type(v) is list:
            walk(v)
        else:
            print(v)

walk(l)
1
2
3
4
5
6
7
8
9

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM