编辑:感谢你的回复,这些回复很有帮助,但我不确定它们是否解决了我的问题的核心。在某些情况下,简单地选择列表中较低的一个,然后相应地添加值会很好,但在这种情况下,我实际上希望处理不均匀的列表,就好像较短的列表缺少的值为零一样。所以我想让1,2,3+ 1,2作为函数。我不认为zip或颠倒我的运算符可以实现这一点。
我正在尝试创建一个函数,它将两个列表的相应值相加,并返回一个新的列表,其中包含两个原始列表的每个索引的总和:
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])但是我得到了一个错误,声明列表索引超出范围?不确定我在这个看似简单的程序中做错了什么……
发布于 2012-09-21 06:00:57
您的IndexError是因为您试图在newVector为空列表时写入newVectorindex。您需要将其初始化为一堆零,或者使用append。
>>> 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),您可以这样做:
first, second = first, second if len(first) > len(second) else second, firsthttps://stackoverflow.com/questions/12520965
复制相似问题