首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在python中添加和减去元素

在python中添加和减去元素
EN

Stack Overflow用户
提问于 2021-11-11 13:57:44
回答 2查看 49关注 0票数 0

这两个列表总是有相同数量的元素,我想知道如何使用python中的递归函数来获得具有相同索引的元素的和和差。总和和差值将出现在新列表中。有一个求和的列表和一个求差的列表。我还在学习python,所以我对其他函数还不是很熟练。以下是两个列表。

代码语言:javascript
运行
复制
l1 = [1,2,3]
l2 = [7,8,9]

以下是预期的输出:

代码语言:javascript
运行
复制
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]
EN

回答 2

Stack Overflow用户

发布于 2021-11-11 14:08:47

如果你想要递归,你可以尝试这样做:

(如果l1和l2的长度相同)

代码语言:javascript
运行
复制
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:])

输出:

代码语言:javascript
运行
复制
>>> l1 = [1,2,3]
>>> l2 = [7,8,9]
>>> rec_sum(l1,l2)
[8,10,12]

>>> rec_sub(l1,l2)
[-6,-6,-6]

但是你可以像下面这样使用zip

代码语言:javascript
运行
复制
>>> [a+b for a,b in zip(l1,l2)]
[8,10,12]

>>> [a-b for a,b in zip(l1,l2)]
[-6,-6,-6]

是否要递归?!

票数 1
EN

Stack Overflow用户

发布于 2021-11-11 14:12:28

下面是一个能够做到这一点的递归函数:

代码语言:javascript
运行
复制
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:])

为了不同,您必须将前两个+号更改为-。但当然,迭代方法要简单得多:

代码语言:javascript
运行
复制
def sum(l1,l2):
    return [l1[x]+l2[x] for x in range(len(l1))]

注意:这两个函数都假定两个列表的长度相同。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69929518

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档