2016-10-16 5 views
1
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

IndexError: list assignment index out of range.

+0

'Vct3'は空のリストなので、最初のインデックスに値を入れることはできません。 'n'は0ではなく最初に1でなければなりませんか? – ozgur

+0

そしてインデックス番号が0から始まるので、おそらく 'n 'を0から始めるといいでしょう。 –

+0

' Vct3 = [a + b for a、z in b Vct1、Vct2)] ' – Nf4r

答えて

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 

さもないと、あなたがリストのすべての要素を考慮したい場合は0ではなく1にnを初期化します。

は、その場合には、しかし、それ自身のパラメータとして、リストの長さに渡すためにリスト内包にそれは一般的に必要ではありません

Vct3 = [a + b for (a, b) in zip(Vct1, Vct2)] 

N. Bを使用することがよりPython的だろう。あなたは簡単にlen()を使ってそれを得ることができます。