python 列表迭代器_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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值