gpt4 book ai didi

python - 如何添加不等长列表中的每个元素?

转载 作者:行者123 更新时间:2023-12-02 18:26:03 28 4
gpt4 key购买 nike

所以这是我的代码,它尝试添加列表中的每个元素,无论其长度如何。

def elem_sum(lst1, lst2):
f_len = len(lst1) - (len(lst2) - 1)
for i in range(0, len(lst2), 1):
if f_len - i >= len(lst1):
break
else:
lst1[i] = lst1[i] + lst2[i]
return lst1

当提供某些输入(例如elem_sum([1, 2, 3], [10, 20]))时,

输出正确返回[11, 22, 3]

而其他输入,例如elem_sum([1, 2, 3], [10, 20, 30, 40])

输出返回错误。

我应该在此处更改什么以确保我的代码适用于任何给定的输入集?

最佳答案

一个可能值得考虑的选项是利用现有的库例程为您提供来自不等长度列表的数字对。 itertools 包中的 zip_longest 函数将执行此操作,并给出元组序列。到达其中一个列表的末尾后,将使用指定的填充值填充缺失的值,默认为 None,但您可以传递自己的填充值。

例如,

from itertools import zip_longest

lst1 = [1, 2, 3]
lst2 = [10, 20, 30, 40]

for t in zip_longest(lst1, lst2, fillvalue=0):
print(t)

给出:

(1, 10)
(2, 20)
(3, 30)
(0, 40)

因此,您可以编写函数来使用列表理解来计算每个元组的总和:

from itertools import zip_longest

def elem_sum(lst1, lst2):
return [sum(t) for t in zip_longest(lst1, lst2, fillvalue=0)]

print(elem_sum([1, 2, 3], [10, 20, 30, 40]))

给出:

[11, 22, 33, 40]

如果您使用的不是非常旧的 Python 版本,itertools 软件包位于标准 Python 库中,因此您无需安装任何附加软件包。

关于python - 如何添加不等长列表中的每个元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70141379/

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