關於遞歸的一道題型
- 2019 年 10 月 22 日
- 筆記
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進行列印,接下來按照同樣的方法將後面的數字依次列印出來

