如果您绝对必须从原始列表中删除项目,并且您没有足够的内存来进行复制,请使用以下替代方法:自己将这些项目移到列表中:
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足够智能,可以在不为列表的新副本分配内存的情况下调整列表的大小。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)