当前位置: 首页 > 编程笔记 >

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

姬欣怡
2023-03-14
本文向大家介绍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
 类似资料:
  • 问题内容: 我有一个这样的清单: 此列表中的每个项目可能包含一个数据对或一个元组,我想将此列表更改为 然后这样做: 我不知道如何更改列表结构,或者如何基于原始列表进行相同的计算? 问题答案: 如果您只想整理列表,请使用:http : //docs.python.org/library/itertools.html#itertools.chain.from_iterable

  • 本文向大家介绍Python分组扁平化列表,包括了Python分组扁平化列表的使用技巧和注意事项,需要的朋友参考一下 在本教程中,我们将编写一个程序,将包含子列表的列表展开。给定的数字将子列表展开,直到给定的数字索引作为部分。让我们看一个例子来清楚地理解它。 输入项 输出结果 让我们看看解决问题的步骤。 初始化列表和编号。 初始化一个空列表。 使用范围(0,len(lists),number遍历列表

  • 问题内容: 我之前已经找到了解决方案,但是我想知道最快的解决方案是将包含其他任意长度列表的列表展平。 例如: 会成为: 可以有无限多个级别。一些列表对象可以是字符串,在输出列表中不得将其展平为它们的顺序字符。 问题答案: 这是一种字符串友好的递归方法: 返回: 请注意,这并不能保证速度或开销的使用,但是说明了一种递归解决方案,希望会对您有所帮助。

  • 注意:这个问题被简单地标记为这个问题的重复,但它不是完全的重复,因为我是专门询问std::optionals的。如果你关心一般情况,还是一个很好的问题。 假设我有嵌套的选项,如下所示(愚蠢的玩具示例): 还有这个垃圾邮件功能: 什么是压扁这张可选支票的最佳方法?我做了这样的东西,它不是可变的,但我不太关心这个(如果真的需要,我可以再添加一个级别(用),而且超出这个级别的所有东西都是可怕的代码)。

  • 我想迭代嵌套在映射中的列表,数据结构如下所示: Freemarker模板: 详细异常消息: FreeMarker模板错误:“...[...]”左操作数:需要序列或字符串或自动转换为字符串的东西(数字、日期或布尔值),但计算结果为extended_hash(包装器:f.t.simplehash):==>groups 那么,问题出在哪里呢? 附言。 我尝试了而不是,它会抛出一个新的异常堆栈: