IndexError: Python の範囲外のタプル インデックス

Rana Hasnain Khan 2023年6月21日
IndexError: Python の範囲外のタプル インデックス

この記事では、エラー IndexError: tuple index out of range が発生する理由と、例を使用して Python でエラーを解決する方法を示します。

Python の IndexError: タプル インデックスが範囲外です

エラーに入る前に、タプルとは何かを理解する必要があります。 タプルは、括弧で囲まれ、コンマで区切られた、順序付けられた要素のコレクションです。

タプルの要素を変更することはできません。 したがって、それらは不変要素としても知られています。

タプルを使用しているときに直面する最も一般的な問題は、同じエラー、Index out of range です。 このエラーは、存在しないタプル内のインデックスにアクセスしようとして、エラーが返されることがあるためです。 このエラーの背後には、主に 2つの理由が考えられます。

たとえば、長さが 7 のタプルがあり、このタプルの最後のインデックスを呼び出したい場合、6 で呼び出す代わりに、7 と呼びます。 配列と同様に、タプルも 0 から始まるため、tuple index out of range エラーが返されます。

2 番目の理由は、タプル構文を使用して要素にアクセスしようとすると、要素がタプルに格納されないことです。 代わりに、配列または変数に格納されます。 同じエラーが返される可能性があります。

これらの状況を回避するには、タプルがあり、タプルの範囲内の要素にアクセスしようとしていることを確認する必要があります。

以下に示すように、果物のタプルを作成し、このタプルの最後のインデックスにアクセスしようとする例を見てみましょう。

fruits_tuple = ("banana", "apple", "orange", "guava")
last_fruit = fruits_tuple[len(fruits_tuple) - 1]
print(last_fruit)

上記のコードでわかるように、4つの果物の名前で構成されるタプルを作成しました。 タプルから最後の要素を呼び出すとき、タプルの長さに関係なくタプルの最後の要素を取得できるように、タプルの長さを取得する len() 関数を使用し、そこから 1 を減算しました。 タプル。

上記のコードの出力を以下に示します。

Python で len を使用してタプルの最後の要素を取得する

タプルの最後の要素を取得する別の方法は、以下に示すように、負のインデックスを使用することです。

fruits_tuple = ("banana", "apple", "orange", "guava")
last_fruit = fruits_tuple[-1]
print(last_fruit)

出力:

Python で len を使用してタプルの最後の要素を取得する

エラーが発生せず、お客様にとって有益な重要なデータが失われないようにする別の方法があります。 以下に示すように、常に try-except ステートメントを使用することをお勧めします。

fruits_tuple = ("banana", "apple", "orange", "guava")
try:
    last_fruit = fruits_tuple[5]
except IndexError:
    print("Index out of range.")

try-except ステートメントを使用すると、エラーが発生した場合でも、アプリケーションがクラッシュしたり動作を停止したりしないようにすることができます。 代わりに、except ステートメントを使用して、ログにエラーを表示または保存できます。

上記のコードの結果を以下に示します。

Python で try except ステートメントを使用してタプルの最後の要素を取得する

上記の例からわかるように、5 を使用してタプルの 6 番目のインデックスを呼び出そうとしましたが、コードはアプリケーションをクラッシュまたは停止する代わりにコードを出力します。

このようにして、index out of range エラーが発生した場合、それは except ブロックによってキャッチされ、プログラムに適した方法で処理できます。

要素を変数から呼び出しているのかタプルから呼び出しているのかわからないという 2 番目の問題の解決策は、Python の type() 関数と if-else ステートメントを使用することです。

変数の型がタプルの場合、関数が実行されます。 それ以外の場合は、以下に示すように、別の関数を実行します。

fruits_tuple = ("banana", "apple", "orange", "guava")
if type(fruits_tuple) == tuple:
    print(fruits_tuple[2])
else:
    print("Variable is not a tuple.")

上記のコードの出力を以下に示します。

Python で型関数を使用してタプルの最後の要素を取得

結論として、タプルの範囲外のインデックスを使用してタプルの要素にアクセスしようとすると、タプル インデックスが範囲外ですというエラーが発生します。

タプルの長さに慣れていない場合は、len() 関数を使用することが重要です。また、try-except ブロックを使用して、エラーが発生する前にエラーをキャッチし、変数の型チェックを使用して、インデックスが正しいことを確認することもできます。 このエラーを回避するために、アクセスしようとしているのはタプルの範囲内であり、変数はそれぞれ tuple 型です。

Rana Hasnain Khan avatar Rana Hasnain Khan avatar

Rana is a computer science graduate passionate about helping people to build and diagnose scalable web application problems and problems developers face across the full-stack.

LinkedIn

関連記事 - Python Error