如何并行添加两个嵌套列表并将结果附加到python中的新列表
发布时间:2020-12-20 11:43:01 所属栏目:Python 来源:网络整理
导读:我试图并行添加两个不相等的嵌套列表的所有元素,并将结果追加到另一个新列表,我写了一些可以添加它们的hacky代码,但代码中有很多问题,首先我试图通过将0添加到列表的末尾来使这些对等于,但代码仍然遇到问题,因为第一对的长度是3而第二对的长度是4,我也尝试使
我试图并行添加两个不相等的嵌套列表的所有元素,并将结果追加到另一个新列表,我写了一些可以添加它们的hacky代码,但代码中有很多问题,首先我试图通过将0添加到列表的末尾来使这些对等于,但代码仍然遇到问题,因为第一对的长度是3而第二对的长度是4,我也尝试使用map但是我无法添加整数和NoneType,
import pdb import itertools x = [[2,3,3],[5,3]] y = [[0,[2,3]] for idx,(a,b) in enumerate(itertools.zip_longest(x,y)): while len(a) < len(b): x[idx].append(0) while len(b) < len(a): y[idx].append(0) print(x,y) new_list = list() for i in zip(x,y): for idx,j in enumerate(i): for ind,a in enumerate(j): val = x[idx][ind] + y[idx][ind] new_list.append(val) print(new_list) 最终的结果应该是这样的 [2,6,7,3] 解决方法
您可以简单地使用
itertools.zip_longest 并使用0填充,就像这样
>>> from itertools import zip_longest as zip >>> x = [[2,3]] >>> y = [[0,3]] >>> [k + l for i,j in zip(x,y,fillvalue=[0]) for k,l in zip(i,j,fillvalue=0)] [2,3] 即使x和y具有不等数量的元素,这也会起作用, >>> from itertools import zip_longest as zip >>> x = [[2,[1]] >>> y = [[0,3]] >>> [k + l for i,1] 请注意,当我们压缩x和y时,我们使用[0]作为fillvalue.当我们输入i和j时,我们使用0作为填充值. 因此,如果x和y中的列表数不相等,则填充使用[0],当i和j中的元素数不相等时,将使用0作为填充. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |