在 Python 中转换嵌套列表迭代器
pythonserver side programmingprogramming更新于 2023/10/8 4:31:00
假设我们有一个嵌套的整数列表;我们必须实现一个迭代器来转换它。每个元素要么是整数,要么是列表。该列表的元素也可能是整数或其他列表。因此,如果输入为 [[1, 1], 2, [1, 1]],则输出将为 [1, 1, 2, 1, 1]
为了解决这个问题,我们将遵循以下步骤 −
在初始化部分,它将采用嵌套列表,其工作方式如下 −
将 res 设置为空列表,索引 := 0,调用 getVal(nestedList)
getVal() 将采用嵌套整数,其工作方式为 −
for i in nestedIntegers
如果 i 是整数,则将 i 插入 res 数组,否则调用 getVal(i list)
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