假设我们有一个嵌套的整数列表;我们必须实现一个迭代器以使其扁平化。每个元素可以是整数,也可以是列表。该列表的元素也可以是整数或其他列表。因此,如果输入类似于[[1,1],2,[1,1]],则输出将为[1,1,2,1,1,1]
为了解决这个问题,我们将遵循以下步骤-
在初始化部分,它将获取嵌套列表,其工作方式如下:
将res设置为空列表,索引:= 0,调用getVal(nestedList)
该getVal()
会采取nestedIntegers,这将作为工作-
为我在nestedIntegers
如果i是整数,则将i插入res数组,否则调用getVal(i列表)
该next()
方法将返回索引所指向的值,并将索引增加1
hasNext()
当旁边有一个元素时,它将返回true,否则返回false
让我们看下面的实现以更好地理解-
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