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 次浏览

开启您的 职业生涯

完成课程后获得认证

开始
广告