我试图并行添加两个不相等的嵌套列表的所有元素,然后将结果追加到另一个新列表,我编写了一些小巧的代码可以添加它们,但是代码有很多问题,首先我试图通过将0附加到列表的末尾来使两对相等,但是由于第一对的长度为3而第二对的长度为4,代码仍然遇到问题,我也尝试使用map但我无法添加整数和NoneType,
import pdb
import itertools
x = [[2,3,3], [5,0,3]]
y = [[0,3], [2,3,3,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, 3, 7, 3, 6, 3]
您可以像这样简单地使用itertools.zip_longest
和填写0
>>> from itertools import zip_longest as zip
>>> x = [[2, 3, 3], [5, 0, 3]]
>>> y = [[0, 3], [2, 3, 3, 3]]
>>> [k + l for i, j in zip(x, y, fillvalue=[0]) for k, l in zip(i, j, fillvalue=0)]
[2, 6, 3, 7, 3, 6, 3]
这会工作,即使x
和y
有不等数量的元素,
>>> from itertools import zip_longest as zip
>>> x = [[2, 3, 3], [5, 0, 3], [1]]
>>> y = [[0, 3], [2, 3, 3, 3]]
>>> [k + l for i, j in zip(x, y, fillvalue=[0]) for k, l in zip(i, j, fillvalue=0)]
[2, 6, 3, 7, 3, 6, 3, 1]
请注意,当我们zip
x
和时y
,我们使用[0]
as fillvalue
。而当我们zip
i
和j
我们使用0
的fillvalue
。
因此,如果x
和y
中的列表数不相等,[0]
则将使用填充,而当i
和j
中的元素数不相等时,0
将用作填充。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句