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
广告