Python中的扁平化嵌套列表迭代器

假设我们有一个嵌套的整数列表;我们必须实现一个迭代器以使其扁平化。每个元素可以是整数,也可以是列表。该列表的元素也可以是整数或其他列表。因此,如果输入类似于[[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

示例(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