迭代时从列表中删除项目,而无需在Python中使用额外的内存

迭代时从列表中删除项目,而无需在Python中使用额外的内存,第1张

迭代时从列表中删除项目,而无需在Python中使用额外的内存

如果您绝对必须从原始列表中删除项目,并且您没有足够的内存来进行复制,请使用以下替代方法:自己将这些项目移到列表中:

def walk_list(list_of_g):    to_idx = 0    for g_current in list_of_g:        if not subtle_condition(g_current): list_of_g[to_idx] = g_current to_idx += 1    del list_of_g[to_idx:]

这将使每个项目(实际上是指向每个项目的指针)仅移动一次,因此O(N)也将移动一次。函数末尾的del语句将删除列表末尾的所有不需要的项目,我认为Python足够智能,可以在不为列表的新副本分配内存的情况下调整列表的大小。



欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5646233.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存