函数

时间:2016-10-16 16:46:35

标签: python indexing

def AddVct(Vct1,Vct2,VctLen):
    Vct3 = []
    n=1
    while n < VctLen:
        Vct3[n] = Vct1[n] + Vct2[n]
        n += 1
        print(Vct[n])
    return Vct3 

程序输出:

IndexError: list assignment index out of range.

如何避免这种情况?

1 个答案:

答案 0 :(得分:0)

您无法分配不存在的列表元素。由于您从一个空列表开始,因此不存在任何元素。通常,您会改为append()

Vct3.append(Vct1[n] + Vct2[n])

或者,您可以事先将Vct3初始化为您想要的尺寸:

Vct3 = [0] * VctLen + 1

然后你已经完成的任务工作正常。

假设您从一个空列表开始并使用append(),列表索引从0开始,因此您应该将Vct3定义为单个元素列表,以便索引在输入和输出列表之间匹配

Vct3 = [None]    # or whatever you want the first value to be

如果你想考虑列表的所有元素,或者将n初始化为0而不是1。

然而,在这种情况下,使用列表理解会更加Pythonic

Vct3 = [a + b for (a, b) in zip(Vct1, Vct2)]
<磷>氮。 B.通常不需要将列表的长度作为其自己的参数传递。您可以使用len()轻松获取它。