Python 中展平巢狀列表迭代器


假設我們有一個整數的巢狀列表;我們必須實現一個迭代器來展平它。每個元素要麼是整數,要麼是列表。該列表的元素也可能是整數或其他列表。因此,如果輸入是 [1,1],2,[1,1],則輸出將是 [1,1,2,1,1]

為了解決這個問題,我們將遵循以下步驟 -

  • 在初始化部分,它將採用巢狀列表,這將以如下方式工作: -

  • 將 res 設定為空列表,索引:= 0,呼叫 getVal(巢狀列表)

  • getVal()將獲取巢狀整數,這將以 -

  • 針對巢狀整數中的 i

    • 如果 i 是整數,則將 i 插入 res 陣列中,否則呼叫 getVal(列表 i)

  • next()方法將返回由 index 指向的值,並將 index 增加 1

  • hasNext()將在其旁邊有元素時返回 true,否則返回 false

示例(Python)

讓我們看以下示例來加深理解 -

 即時演示

class NestedIterator(object):
   def __init__(self, nestedList):
      self.res = []
      self.index = 0
      self.getVal(nestedList)
      #print(self.res)
   def getVal(self,NestedList):
      for item in NestedList:
         if isinstance(item, int):
            self.res.append(item)
         else:
            self.getVal(item)
   def next(self):
      self.index+=1
      return self.res[self.index-1]
   def hasNext(self):
      if self.index == len(self.res):
         return False
      return True
ob = NestedIterator([[1,1],2,[1,1]])
while ob.hasNext():
   print(ob.next())

輸入

[[1,1],2,[1,1]]

輸出

1
1
2
1
1

更新於:2020 年 4 月 29 日

374 次瀏覽

開啟您的 職業生涯

完成課程後獲得認證

開始
廣告
© . All rights reserved.