我有这样的清单:
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
如何解决这个问题?
答案 0 :(得分:0)
首先,我不确定这会起作用。
我使用generator
创建了您的列表,以避免将所有列表都放在内存中。并且在连接子列表时使用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]]]