【发布时间】:2023-04-02 14:30:01
【问题描述】:
我知道在迭代列表时不允许删除元素,但是否允许在迭代时将元素添加到 python 列表中。这是一个例子:
for a in myarr:
if somecond(a):
myarr.append(newObj())
我已经在我的代码中尝试过,它似乎工作正常,但我不知道是不是因为我很幸运,它会在未来的某个时候中断?
编辑:我不想复制列表,因为“myarr”很大,因此它太慢了。我还需要用“somecond()”检查附加的对象。
编辑:在某些时候“somecond(a)”会是假的,所以不可能有无限循环。
编辑:有人询问“somecond()”函数。 myarr 中的每个对象都有一个大小,每次 "somecond(a)" 为真并且将一个新对象附加到列表中时,新对象的大小都会小于 a。 “somecond()” 有一个 epsilon 来表示对象可以有多小,如果它们太小,它将返回“false”
【问题讨论】:
-
复制列表不需要太多时间。这是浅拷贝,不是深拷贝。
-
@S.Lott:列表很容易超过一亿个元素,上面的循环重复了很多次。即使是浅拷贝也会很慢。
-
既然你说你已经这样做了,你的循环是否会遍历附加的项目以及列表中的原始项目?
-
@WesDec:您似乎在谈论广度优先搜索。一个简单的列表不适合你正在做的事情。这听起来像某种树。不是一个简单的列表。
-
@WesDec:另外,不要添加 cmets 道歉。只需专注于正确回答问题。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python:在迭代时将元素添加到列表中 - Python技术站