關於遞歸的一道題型

item = [[1, 2],3, [4,[5,[6,7]]]]
 def foo(item):
    for i in item:
        if isinstance(i, list):  # print(isinstance(1, list)) False 1不是列表對象
            foo(i)
        else:
            print(i, end=' ')

foo(item)

結果: 1,2,3,4,5,6,7

  在這個遞歸函數中,首先要將item裏面的元素當作是三個元素,這樣才能找到突破口,item裏面包含[1,2] ,  3  ,  [4,[,5[6,7]]]這麼三個大的元素, 在執行函數時, 第一次i 的值爲[1,2] 判斷[1,2]是列表的對象, 而後執行下一步,繼續調用foo函數,這時候i將它的值傳遞給item,那麼item在這裏就是[1,2], 繼續執行下一步for循環,這時i就去[1,2]列表中的索引爲0 的第一位數字1,而後再繼續執行下一步,很顯然1並非列表對象,因此執行else將1進行打印,接下來按照一樣的方法將後面的數字依次打印出來函數

相關文章
相關標籤/搜索