您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

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

迭代时从列表中删除项目,而无需在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足够智能,可以在不为列表的新副本分配内存的情况下调整列表的大小。

python 2022/1/1 18:41:35 有267人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶