当前位置: 首页 > 面试题库 >

Python:迭代时将元素添加到列表

东郭和光
2023-03-14
问题内容

我知道在迭代列表时不允许删除元素,但是在迭代时允许将元素添加到python列表中。这是一个例子:

    for a in myarr:
      if somecond(a):
          myarr.append(newObj())

我已经在我的代码中尝试过了,它似乎可以正常工作,但是我不知道是否是因为我很幸运,将来它会折断吗?

编辑:我不愿复制列表,因为“ myarr”很大,因此会太慢。另外,我需要使用“ somecond()”检查附加对象。

编辑:在某些时候“ somecond(a)”将为假,因此不能有无限循环。

编辑:有人问“ somecond()”函数。myarr中的每个对象都有一个大小,并且每次“
somecond(a)”为true并将新对象附加到列表中时,新对象的大小将小于a。“
somecond()”具有一个epsilon来表示小对象的数量,如果它们太小,它将返回“ false”


问题答案:

您可以使用islicefrom itertools在列表的较小部分上创建迭代器。然后,您可以将条目追加到列表中,而不会影响要迭代的项目:

islice(myarr, 0, len(myarr)-1)

更好的是,您甚至不必遍历所有元素。您可以增加步长。



 类似资料:
  • 问题内容: 在迭代集合时是否可以向集合中添加元素? 更具体地说,我想遍历一个集合,如果一个元素满足特定条件,我想向集合中添加一些其他元素,并确保也对这些添加的元素进行遍历。(我意识到这可能会导致循环终止,但是我很确定不会发生这种情况。) Sun 的Java教程建议不可能:“请注意,这是在迭代过程中修改集合的唯一安全方法;如果在迭代进行过程中对基础集合进行了其他任何修改,则行为未指定。” 因此,如果

  • 问题内容: 我想避免。我该怎么办? 问题答案: 您可以在迭代本身期间使用支持remove / add方法的。

  • 问题内容: 我想写这样的代码- 但是我也 尝试使用,但是我得到了相同的结果 问题答案: 解释原因 for- each循环也在内部创建的迭代器的。在遍历map时,您已经通过将值再次放入map()来修改了map的结构,这会导致这种情况。 甚至在文档中也对此做了很好的解释- 此类的所有“集合视图方法”返回的迭代器都是快速失败的:如果在创建迭代器后的任何时间对结构进行结构修改,则除了通过迭代器自己的rem

  • 主要内容:Python append()方法添加元素,Python extend()方法添加元素,Python insert()方法插入元素实际开发中,经常需要对 Python 列表进行更新,包括向列表中添加元素、修改表中元素以及删除元素。本节先来学习如何向列表中添加元素。 《 Python序列》一节告诉我们,使用 运算符可以将多个序列连接起来;列表是序列的一种,所以也可以使用 进行连接,这样就相当于在第一个列表的末尾添加了另一个列表。 请看下面的演示: 运行结果: language = ['P

  • 问题内容: 我的问题是我想在遍历新元素的同时扩展一个包含新元素的列表,并且希望迭代器继续刚才添加的元素。 根据我的理解,会在列表中的当前元素之前而不是之后添加一个元素。是否可以通过其他方式实现这一目标? 问题答案: 除了以外,您无法在修改集合时使用进行迭代。 但是,如果使用方法,该方法返回,并对其进行迭代,则您还有更多要修改的选项。从javadoc中获取: 新元素插入到隐式光标之前:…后续调用将返

  • 问题内容: 我正在尝试将元素添加到python中的json文件中,但我无法做到这一点。 这是我直到现在尝试的内容(删除了一些变化): 但是,我得到的是: 很好,因为我还需要添加一个新行而不是一个元素,但是我想得到这样的东西: 我应该如何添加新元素? 问题答案: 你可以这样做。