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
廣告
資料結構
網路
關係資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP