我有两个高维的整数列表。每个列表的维度超过200000.我的任务是这样的: 给出两个清单
a = [None, 0, None, None, 0, None, None, None, 0, None, None, None, None, None, 0,...]
b = [7 1 4 8 2 1 1 1 1 6 1 6 1 4 4 1 1 6 6 7 4 4 7 5...]
None
的数量等于b的长度
我的问题是如何使用 最小内存替换None
中每个元素a
的所有b
我的方法是
j = 0
for i in range(len(a)):
if a[i] == None:
while j < len(b):
a[i] = b[j]
break
j = j+1
由于我的程序消耗大量内存,我真的需要节省内存使用。在这种情况下,你能否就如何保存记忆给我一些想法?
答案 0 :(得分:3)
您可以从.then()
创建一个迭代器,然后在列表推导中,如果b
的当前元素是a
,您可以None
获取下一个项目。
next(b_iter)
作为一个例子
b_iter = iter(b)
a = [next(b_iter) if i is None else i for i in a]