首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >函数添加两个列表

函数添加两个列表
EN

Stack Overflow用户
提问于 2012-09-21 05:10:11
回答 7查看 2.7K关注 0票数 0

编辑:感谢你的回复,这些回复很有帮助,但我不确定它们是否解决了我的问题的核心。在某些情况下,简单地选择列表中较低的一个,然后相应地添加值会很好,但在这种情况下,我实际上希望处理不均匀的列表,就好像较短的列表缺少的值为零一样。所以我想让1,2,3+ 1,2作为函数。我不认为zip或颠倒我的运算符可以实现这一点。

我正在尝试创建一个函数,它将两个列表的相应值相加,并返回一个新的列表,其中包含两个原始列表的每个索引的总和:

代码语言:javascript
运行
复制
def addVectors(v1, v2):
    print(v1[0], v1[1], v2[0])
    newVector = []
    if len(v1) > len(v2):
        for index in range(len(v1)):
            print(index)
            newVector[index] += v1[index] + v2[index]
    else:
        for index in range(len(v2)):
            print(index)
            newVector[index] += v2[index] + v1[index]
    return newVector


addVectors([1, 2, 3], [1, 2])

但是我得到了一个错误,声明列表索引超出范围?不确定我在这个看似简单的程序中做错了什么……

EN

Stack Overflow用户

发布于 2012-09-21 06:00:57

您的IndexError是因为您试图在newVector为空列表时写入newVectorindex。您需要将其初始化为一堆零,或者使用append。

代码语言:javascript
运行
复制
>>> first = [1,2,3]
>>> second = [1,2]
>>> output = []
>>> for i, item in enumerate(first):
...   additional = second[i] if i < len(second) else 0
...   output.append(item + additional)
...
>>> output
[2, 4, 3]

为了确保len(first) > len(second),您可以这样做:

代码语言:javascript
运行
复制
first, second = first, second if len(first) > len(second) else second, first
票数 0
EN
查看全部 7 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12520965

复制
相关文章

相似问题

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