關於遞歸的一道題型

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

Tags: