2016-04-28 2 views
-1

「範囲外の索引」に関する他の回答を読んできましたが、わからないことから、存在しないリスト索引に値を割り当てることはできません。私の最初のコードはでした:IndexError:なぜ範囲外ですか?

spam =[] 
for i in range(5): 
    spam[i]=i 
print (spam) 

他の回答の一部を読んだ後、私はちょうどrange機能を使用する場合、iは0から始まりましたし、リストに割り当てることができなかった、ということに気づきました。だから次の少しのコードを作成しました:

spam =[] 
for i in range(5): 
    i += 1 
    spam[i]=i 
print (spam) 

そして私はまだ同じエラーが発生しています。私はiがコードのi += 1の部分の後に1の値を取得することを知っています。したがって、リスト項目1を空のスパムリストの番号1に割り当てる必要があります。インデックスが作成されないのはなぜですか?

+1

すでに理解しているように、*「存在しないリストインデックスに値を割り当てることはできません」という*ため、おそらくあなたは何かをする必要があります。代わりに、新しい要素をリストの最後に '.append'する必要があります。 – jonrsharpe

+0

.appendは次の章にありました。プレビューをありがとう。 –

答えて

1

あなたが書いた:

>>> x = [] 

あなたがリストとしてxを定義します。しかしそれは空です。

あなたが値iにあなたの配列の要素数iの値を変更することを意味

>>> x[i] = i #let assume i is a number 

を実行してみてください。しかし、要点は配列番号iが存在しないことです。あなたの配列は要素なしで空です。あなたは配列に要素を与えることappend()メソッドを使用することができます。

>>> x.append(i) 
罰金作品

。そして、以前の方法でこの新しい要素の値を変更することができます。このことを確認します。

>>> x = [] 
>>> x 
[] 
>>> i = 0 
>>> x[i] = i 

Traceback (most recent call last): 
    File "<pyshell#18>", line 1, in <module> 
    x[i] = i 
IndexError: list assignment index out of range 
>>> x.append(i) 
>>> x 
[0] 
>>> x[i] = i 
>>> x 
[0] 
>>> x[i] = 2 
>>> x 
[2] 
>>> 
0

spam=[]はあなたの提案ループの両方が存在しないリストの要素にアクセスしようとしている長さが0の空のリストを作成します。

spam = [] 
for i in range(5): 
    spam.append(i) 
関連する問題