web-dev-qa-db-ja.com

IndexError:範囲外のインデックスとpython

出力の53行目を印刷するようにプログラムに指示しています。このエラーは、それほど多くの行がないため、印刷できないことを示していますか?

17
Tyler

53項目のリストがある場合、最後の項目はthelist[52]インデックス作成が0から始まるため。

37
Alex Martelli

はい、

存在しないリストの要素にアクセスしようとしています。

MyList = ["item1", "item2"]
print MyList[0] # Will work
print MyList[1] # Will Work
print MyList[2] # Will crash.

オフバイワンのエラーが発生しましたか?

23
kjfletch

はい。シーケンスには54番目の項目がありません。

4
SilentGhost

そのとおり。 「範囲外のリストインデックス」は、_n-thリストの要素。リストの長さはnより小さい。

3

Pythonインデックス付けが機能する方法は、0から始まるということですですから、リストの最初の番号は[0]になります。印刷する必要があります[52]、開始インデックスは0であるため、行53は[52]

値から1を引くと、問題ないはずです。 :)

2
Jack

このエラーを克服したい場合は常に留意してください。インデックス付けと範囲のデフォルト値は0から始まります。したがって、アイテムの合計が100の場合、l [99]とrange(99)は最後の要素までアクセスできます。

このタイプのエラーが発生した場合は、範囲内または範囲の中間にある項目とクロスチェックしてください。出力を取得した場合、インデックスが最後ではないことを確認してください。

2
Brijesh Doshi

テキストファイルからリストを読み取る場合、リスト要素として最後の空行を取得できます。あなたはこのようにそれを取り除くことができます:

list.pop()
for i in list:
   i[12]=....
0
Ozgur AGAN