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進行打印,接下來按照一樣的方法將後面的數字依次打印出來函數