我正在尝试并行添加两个不相等的嵌套列表的所有元素,并将结果追加回另一个新列表,我写了一些可以添加它们的代码,但是有很多问题代码,首先我尝试通过在列表末尾附加 0 来使对相等,但是代码仍然遇到问题,因为第一对的长度是 3,第二对的长度是 4,我也尝试使用映射,但我无法添加整数和 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]
作为填充值
。当我们 zip
i
和 j
时,我们使用 0
作为 fillvalue
。
因此,如果 x
和 y
中的列表数量不相等,则 [0]
将被用于填充和当i
和j
中的元素个数不相等时,将以0
作为填充。
关于python - 如何并行添加两个嵌套列表并将结果附加到 python 中的新列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30275089/