基礎知識のリストの参照でつまづいた。
解決したいこと
以下のコードの違いがわからず、何故エラーが起きるのかわかりません。
例)
漸化式をPythonで書きました。
リストaを40個用意しました。
a[1]=1 ,a[2]=1
a[i] = a[i-2]+a[i-1]のように求めます。
test.pyのコードは41個の要素があるリストを用意してあります。
test_1.pyのコードは40個の要素があるリストを用意してあります。
実行すると、test_1.pyだけが[list assignment index out of range]とエラーを吐き出します。
range(3,40)は3から39までを参照しますよね?
a[40]を求めるにしても、a[39]とa[38]を使うので、要素は41個もいらないと思うのですが、何故このようなエラーが起きるのでしょうか?
どなたか分かる方教えていただけますでしょうか。
発生している問題・エラー
a[i]=a[i-2]+a[i-1]
IndexError: list assignment index out of range
a =[1]*41
for i in range(3,41):
a[i]=a[i-2]+a[i-1]
print(a)
a =[1]*40
for i in range(3,41):
a[i]=a[i-2]+a[i-1]
print(a)
自己解決できました。
基本リストはa[0]から始まる。そのためa[0]*40は、a[0]~a[39]のリストを用意する。