【发布时间】:2022-01-05 12:24:01
【问题描述】:
所以这是我的代码,它尝试添加列表中的每个元素,而不管它们的长度。
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])
输出返回错误。
我应该在此处进行哪些更改以确保我的代码适用于任何给定的输入集??
【问题讨论】:
-
有一个可能的捷径。
[sum(t) for t in itertools.zip_longest(lst1, lst2, fillvalue=0)] -
@Code-Apprentice 一开始我也想知道同样的事情,但我认为问题中的示例输出
[11, 22, 3]已经足够清楚了。 -
您复杂的
f_len用法毫无意义。例如,elem_sum([1, 2, 3], [10])返回[1, 2, 3]。 -
附带说明,我很难理解
f_len的用途。我认为您正在尝试检查i是否超出list1的长度,以便您不会对其进行索引并导致错误。如果是这样,您应该直接这样做:if i >= len(lst1)。现在你可以摆脱f_len了。