扩展列表时出现内存错误

memory error while extending lists

我有这样一个列表:

mylist=[[[1,2,3,...,200],[1,2,3,...,200],[1,2,3,...,200],[1,2,3,...,40]],...]

我想合并 mylist 中每个项目的前三个列表,并且有这样的东西:

final_list=[[[1,2,3,...,600],[1,2,3,...,40]],...]

我写了这段代码来做到这一点:

def extend(mylist):
    a=mylist[0]
    b=mylist[1]
    c=mylist[2]
    a.extend(b)
    a.extend(c)
    return a

final_list=[]
for i in mylist:
    final_list.append([extend(i),i[3]])

当列表很小时它可以正常工作,但是当我想将三个 200 数组列表合并为一个 600 数组列表时,我面临 "MemorryError":

    a.extend(c)
MemoryError

如何解决这个问题?

首先,我不确定这是否可行。

我使用 generator to avoid having all your lists in memory. And using itertools.chain 创建了您的列表,以在连接您的子列表时提高效率。

import itertools

mylist = [[[1, 2], [3, 4], [5, 6], [7, 8]]]

def contact_elements(huge_list):
  for i in huge_list:
    yield [list(itertools.chain(i[0], i[1], i[2])), i[3]]

final_list = [sub for sub in contact_elements(mylist)]
print(final_list) # [[[1, 2, 3, 4, 5, 6], [7, 8]]]