gpt4 book ai didi

python - 如何并行添加两个嵌套列表并将结果附加到 python 中的新列表

转载 作者:太空宇宙 更新时间:2023-11-03 13:16:01 24 4
gpt4 key购买 nike

我正在尝试并行添加两个不相等的嵌套列表的所有元素,并将结果追加回另一个新列表,我写了一些可以添加它们的代码,但是有很多问题代码,首先我尝试通过在列表末尾附加 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]

即使 xy 的元素数量不相等,这也会起作用,

>>> 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 xy 时,我们使用[0] 作为填充值。当我们 zip ij 时,我们使用 0 作为 fillvalue

因此,如果 xy 中的列表数量不相等,则 [0] 将被用于填充和当ij中的元素个数不相等时,将以0作为填充。

关于python - 如何并行添加两个嵌套列表并将结果附加到 python 中的新列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30275089/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com