这两个列表总是有相同数量的元素,我想知道如何使用python中的递归函数来获得具有相同索引的元素的和和差。总和和差值将出现在新列表中。有一个求和的列表和一个求差的列表。我还在学习python,所以我对其他函数还不是很熟练。以下是两个列表。
l1 = [1,2,3]
l2 = [7,8,9]
以下是预期的输出:
for sum of the elements with the same index:
l3 = [8,10,12]
for the difference of the elements with the same index:
l4 = [-6,-6,-6]
发布于 2021-11-11 14:08:47
如果你想要递归,你可以尝试这样做:
(如果l1和l2的长度相同)
def rec_sum(l1,l2):
if (len(l1) == 1) and (len(l2) == 1):
return [l1[0] + l2[0]]
return [l1[0]+l2[0]] + rec_sum(l1[1:],l2[1:])
def rec_sub(l1,l2):
if (len(l1) == 1) and (len(l2) == 1):
return [l1[0] - l2[0]]
return [l1[0]-l2[0]] + rec_sub(l1[1:],l2[1:])
输出:
>>> l1 = [1,2,3]
>>> l2 = [7,8,9]
>>> rec_sum(l1,l2)
[8,10,12]
>>> rec_sub(l1,l2)
[-6,-6,-6]
但是你可以像下面这样使用zip
:
>>> [a+b for a,b in zip(l1,l2)]
[8,10,12]
>>> [a-b for a,b in zip(l1,l2)]
[-6,-6,-6]
是否要递归?!
发布于 2021-11-11 14:12:28
下面是一个能够做到这一点的递归函数:
def sum(l1,l2):
if len(l1)==len(l2)==1:
return [l1[0]+l2[0]]
else:
return [l1[0]+l2[0]]+sum(l1[1:],l2[1:])
为了不同,您必须将前两个+号更改为-。但当然,迭代方法要简单得多:
def sum(l1,l2):
return [l1[x]+l2[x] for x in range(len(l1))]
注意:这两个函数都假定两个列表的长度相同。
https://stackoverflow.com/questions/69929518
复制相似问题