【Python】index()でList(リスト)から要素のインデックスを取得する!

エンジニアに特化した転職エージェント!

・IT/Web系エンジニアの経験者の方
・どこの転職エージェントを利用しようか迷っている方

それなら、キッカケエージェントにご相談!

キッカケエージェントでは、少数精鋭のエージェントが、エンジニアの経験やスキル、志向性などをカウンセリングし、的確なアドバイスを提供します!

また、徹底した企業へのヒアリングにより、最適なマッチングを実現し、今では内定率が一般的なエージェントの2倍以上となっています!

転職エージェントに迷っている方、まずは無料でキャリア相談から!




(この記事は2024年02月05日に投稿されました。)

PythonでList(リスト)の要素のインデックスを取得するにはindex()を使用します。

index()とは、オブジェクトの対象データの位置を取得する関数になります。

そのため、List(リスト(に対して使用すると検索した要素の格納位置を取得するようになります。

しかし、検索した要素がリストに見つからない場合はエラーが発生するため、注意してください。

また、index()は1次元List(リスト)だけでなく、2次元List(リスト)や3次元List(リスト)のような多次元リスト内のインデックスも取得することができます。

他にもリストの要素のインデックスを取得する関数はありますが、index()が一番シンプルで使いやすいため、もしList(リスト)から要素のインデックスを取得したいと思った場合はindex()を使用しましょう。

今回はindex()でList(リスト)から要素のインデックスを取得する方法について紹介していきます。

この記事はこんな方におすすめ

リストから検索する要素が何番目に格納されているか知りたい場合

リストに検索する要素が格納されているかどうか知りたい場合

index()とは

index()とは、オブジェクトから対象のデータの格納位置を検索する関数となります。

そのため、List(リスト)に対して使用することで、リストに格納されている要素のインデックスを取得することができます。

Pyhtonのindex()をList(リスト)に対して使用した際の処理イメージ

index()の書き方

index()をリストに対して使用する場合の書き方は下記のようになります。

● main.py

対象のリストの後ろに「index()」と追記し、括弧の中に必須な引数を1つ指定することで使用することができます。

また、任意な引数を2つ追加で指定しても使用することができます。

index()のパラメータ

index()のパラメータは下記のようになります。

  1. 検索する要素:(必須)
    リストから検索したい要素を文字列で指定する。
  2. 開始インデックス:(任意)
    リストの検索開始位置をインデックスで指定する。
    (検索範囲に含まれる)
  3. 終了インデックス:(任意)
    リストの検索終了位置をインデックスで指定する。
    (検索範囲に含まれない)

index()は必須なパラメータとして「検索する要素」を指定します。

また、任意なパラメータとして「開始インデックス」と「終了インデックス」を指定します。

index()の返り値

index()の返り値は一致するList(リスト)のインデックス(0からスタートする要素の番号)となります。

index()でList(リスト)から要素のインデックスを取得するサンプルコード

index()でList(リスト)から要素のインデックスを取得するサンプルコードをご紹介します。

ここでは下記の3ケースでindex()を使用します。

  1. List(リスト)に検索する要素が存在する場合
  2. List(リスト)に検査する要素が存在しない場合
  3. List(リスト)に検索する要素が複数存在する場合

List(リスト)に検索する要素が存在する場合

List(リスト)に要素が存在する場合にindex()を使用すると、一致する要素のインデックスを返します。

● main.py

実行結果

検索する要素が存在する場合にindex()でList(リスト)から要素のインデックスを取得した結果

index()でList(リスト)から検索する要素のインデックスを取得しています。

そのため、「Java」の格納位置である「4」と「678」の格納位置である「2」が表示されています。

List(リスト)に検査する要素が存在しない場合

List(リスト)に検索する要素が存在しない場合にindex()を使用すると、エラーが発生します。

● main.py

実行結果

検索する要素が存在しない場合にindex()でList(リスト)から要素のインデックスを取得した結果

index()でList(リスト)から検索する要素のインデックスを取得しています。

「jQuery」はリストに存在しないため、エラーが表示されています。

Sossy

エラーの場合は処理全体が落ちてしまうので、index()を使用する場合は例外処理で回避する必要があります。

List(リスト)に検索する要素が複数存在する場合

List(リスト)に最小値の要素が複数存在する場合にindex()を使用すると、最初に一致した要素のインデックスを返します。

● main.py

実行結果

検索する要素が複数存在する場合にindex()でList(リスト)から要素のインデックスを取得した結果

index()でList(リスト)から検索する要素のインデックスを取得しています。

そのため、「JavaScript」の最初の格納位置である「0」と「678」の格納位置である「2」が表示されています。

index()で検索範囲を指定してList(リスト)から要素のインデックスを取得する場合

index()で検索範囲を指定してList(リスト)から要素のインデックスを取得するに引数に「開始インデックス」と「終了インデックス」を指定します。

両方のインデックスを指定することで、リストの検索する範囲を制限することができます。

  1. 開始インデックスと終了インデックスを指定する場合
  2. 開始インデックスのみ指定する場合

開始インデックスと終了インデックスを指定する場合

index()の開始インデックスと終了インデックスを指定すると、List(リスト)の「開始インデックス〜終了インデックスまで」が検索範囲となります、

● main.py

実行結果

開始インデックスと終了インデックスを指定してindex()でList(リスト)から要素のインデックスを取得した結果

index()で検索範囲を指定してList(リスト)から検索する要素のインデックスを取得しています。

開始インデックスを「1」、終了インデックスを「4」の範囲で「C#」を検索したため、見つけることができ、「3」が表示されています。

また、開始インデックスを「0」、終了インデックスを「2」の範囲で「C#」を検索したため、見つけることができずエラーが発生しています。

開始インデックスのみ指定する場合

index()の開始インデックスのみを指定すると、List(リスト)の「開始インデックス〜末尾まで」が検索範囲となります。

● main.py

実行結果

開始インデックスのみ指定してindex()でList(リスト)から要素のインデックスを取得した結果

index()で検索範囲を指定してList(リスト)から検索する要素のインデックスを取得しています。

そのため、最初に一致した「JavaScript」の「0」と「678」の「2」が表示されています。

index()で多次元List(リスト)から要素のインデックスを取得するサンプルコード

index()で1次元List(リスト)だけでなく、多次元List(リスト)から要素のインデックスを取得することができます。

そのため、ここではindex()で多次元List(リスト)から最小値を取得するサンプルコードをご紹介します。

2次元List(リスト)の場合

2次元List(リスト)の場合にindex()を使用します。

● main.py

実行結果

index()で2次元List(リスト)から要素のインデックスを取得した結果

index()で2次元List(リスト)から要素のインデックスを取得しています。

そして、1次元リストである「[‘R’, ‘Perl’, ‘Ruby’, ‘VB’]」は2次元リスト内に存在するため、「0」が表示されています。

3次元List(リスト)の場合

3次元List(リスト)の場合にindex()を使用します。

● main.py

実行結果

index()で3次元List(リスト)から要素のインデックスを取得した結果

index()で3次元List(リスト)から検索する要素のインデックスを取得しています。

そのため、各1次元(List)リストである「Ruby」の「4」、「1」、「0」、「4」、「1」、「0」が表示されています。

また、1次元(List)リストである「[Ruby]」の「2」、「2」が表示されています。

そして、2次元(List)リストである「[[‘JavaScript’, ‘Python’, ‘Java’, ‘C’, ‘Ruby’], [‘Swift’, ‘Ruby’, ‘Kotlin’, ‘C#’, ‘PHP’], [‘Ruby’]]」の「0」が表示されています。

index()でList(リスト)以外から要素のインデックスを取得する場合

index()でList(リスト)以外の要素のインデックスを取得することもできます。

そのためここでは、index()で下記のイテレータから要素のインデックスを取得します。

  1. タプルの場合
  2. 辞書型の場合
  3. set型の場合
  4. frozenset型の場合

タプルの場合

index()でタプルから検索した要素のインデックスを取得します。

● main.py

実行結果

index()でタプルから要素のインデックスを取得した結果

index()でタプルから検索する要素のインデックスを取得しています。

そのため、「Python」の格納位置である「3」と「678」の格納位置である「2」が表示されています。

辞書型の場合

index()で辞書型から要素のインデックスを取得します。

● main.py

実行結果

index()で辞書から要素のインデックスを取得した結果(失敗)

辞書型はindex()を直接使用すると、エラーが発生します。

そのため、キーと値を別々で取得し、list()でList(リスト)に一時的に変換してからindex()を使用します。

● main.py

実行結果

index()で辞書から要素のインデックスを取得した結果

index()で辞書型から検索する要素のインデックスを取得しています。

そのため、keys()とlist()で辞書のキーをList(リスト)で取得し、「js」の格納位置である「0」が表示されています。

また、vlaues()とlist()で辞書の値をList(リスト)で取得し、「Python」の格納位置である「3」が表示されています。

set型の場合

index()でset型から要素のインデックスを取得します。

● main.py

実行結果

index()でset型から要素のインデックスを取得した結果(失敗)

set型は要素のインデックス自体が存在しないため、index()を使用するとエラーが発生します。

そのため、下記のようにlist()を使用してset型からList(リスト)へ一時的に変換することで使用が可能になります。

● main.py

実行結果

index()でset型から要素のインデックスを取得した結果

index()でset型から検索する要素のインデックスを取得しています。

そのため、「Java」の格納位置である「4」と「2」の格納位置である「5」が表示されています。

frozenset型の場合

index()でfrozenset型から要素のインデックスを取得します。

● main.py

実行結果

index()でfrozenaset型から要素のインデックスを取得した結果(失敗)

frozenset型も同様に要素のインデックス自体が存在しないため、エラーが発生します。

そのため、こちらもlist()でfrozenset型からList(リスト)へ一時的に変換することで使用が可能になります。

● main.py

実行結果

index()でfrozenset型から要素のインデックスを取得した結果

index()でfrozenset型から検索する要素のインデックスを取得しています。

そのため、「PHP」の格納位置である「0」と「346」の格納位置である「1」が表示されています。

index()と他の関数を組み合わせてList(リスト)から要素のインデックスを取得する場合

index()は他の関数を組み合わせることで目的に合わせた要素のインデックスの取得が可能になります。

そのため、ここではindex()と他の関数を組み合わせてList(リスト)から要素のインデックスを取得します。

max()と組み合わせる場合

index()はmax()と組み合わせて使用することで、リスト内の最大値の要素のインデックスを取得することができます。

max()とは、オブジェクトから最小値のデータを取得する関数になります。

max()でリスト内の最大値を取得し、その要素を検索要素として使用することでリスト内の最大要素のインデックスを取得することが可能になります。

● main.py

実行結果

index()とmax()を組み合わせて、List(リスト)内の値の最大値の要素のインデックスを取得した結果

index()とmax()でリストから最大値の要素のインデックスを取得しています。

そのため、リスト内の最大値要素「500」の格納位置である「0」と、「Python」の格納位置である「3」が表示されています。

min()と組み合わせる場合

index()はmin()と組み合わせて使用することで、リスト内の最小値の要素のインデックスを取得することができます。

min()とは、オブジェクトから最小値のデータを取得する関数になります。

min()でリスト内の最小値を取得し、その要素を検索要素として使用することでリスト内の最小要素のインデックスを取得することが可能になります。

● main.py

実行結果

index()とmin()を組み合わせて、List(リスト)内の値の最小値の要素のインデックスを取得した結果

index()とmin()でリストから最小値の要素のインデックスを取得しています。

そのため、リスト内の最小値要素「100」の格納位置である「0」と、「C#」の格納位置である「1」が表示されています。

もし、min()について詳しく知りたい場合は下記の記事をご参考ください。

index()でList(リスト)から要素のインデックスを取得した実際のケース

index()でList(リスト)から要素のインデックスを取得した実際のケースについてご紹介します。

例えばindex()を使用して、郵便番号の住所を検索し、表示するようなコードを作成します。

● index.html

● result.html

● main.py

実行結果(検索成功時)

index()で入力した郵便番号の住所を表示した結果(検索成功時)

実行結果(検索失敗時)

index()で入力した郵便番号の住所を表示した結果(検索失敗時)

index()で入力した郵便番号を検索して住所を表示しています。

今回は検索可能な郵便番号をリスト化し、index()で入力した郵便番号がのインデックスを取得できるかどうかを調べています。

そして、見つかった場合はAPIを使用し、見つからない場合は例外処理を行うようにしています。

そのため、「4600018」と入力すると住所が表示され、「4560003」と入力するとエラーメッセージが表示されます。

index()以外でList(リスト)から要素のインデックスを取得する関数の一覧

Pyhtonでは、index()以外でもList(リスト)から要素のインデックスを取得できる関数が存在します。

そのため、ここではindex()以外でList(リスト)から要素のインデックスを取得する関数の一覧についてご紹介します。

Numpy.where()

Numpy.where()とは、条件に一致した要素のインデックスを取得することができるNumpyの関数となります。

そもそも、Numpyとは数値の計算を効率的に行うためのモジュールであり、インストール後にインポートすることで使用が可能になります。

つまり、NumpyをPC内にインストール後し、コード上でインポートすることでwhrere()を使用することができます。

● main.py

実行結果

Numpy.where()でList(リスト)から要素のインデックスを取得した結果

Numpy.where()でList(リスト)から検索する要素のインデックスを取得しています。

そのため、最初に一致した「JavaScript」の「0」と「678」の「2」が表示されています。

more_itertools.locate()

more_itertools.locate()とは、オブジェクトの最小値を取得するmore_itertoolsモジュールの関数になります。

そのため、

● main.py

実行結果

more_itertools.locate()でList(リスト)から要素のインデックスを取得した結果

more_itertools.locate()でList(リスト)から要素のインデックスを取得しています。

そのため、最初に一致した「JavaScript」の「0」と「678」の「2」が表示されています。

文字列に対してindex()を使用する場合

index()を文字列に対して使用すると、一致した文字の番号を取得します。

● main.py

実行結果

index()で文字列から検索する文字のインデックスを取得した結果

index()で文字列から検索する文字のインデックスを取得しています。

そのため、最初に一致した「JavaScript」の「0」と「678」の「2」が表示されています。

もし、index()で文字列から検索する文字のインデックスを取得する内容について詳しく知りたい場合は下記の記事をご参考ください。

まとめ

● index()とはオブジェクトから対象のデータの格納位置を検索する関数である。

● index()をList(リスト)に対して使用する場合は、下記の引数を指定して使用する。
・検索する要素:(必須)
・開始インデックス:(任意)
・終了インデックス:(任意)

● List(リスト)に検索する要素が存在する場合にindex()を使用すると、一致する要素のインデックスを返す。

● List(リスト)に検索する要素が存在しない場合にindex()を使用すると、エラーが発生する。

● List(リスト)に検索する要素が複数存在する場合にindex()を使用すると、最初に一致する要素のインデックスを返す。

● index()で検索範囲を制限してリストから要素のインデックスを取得するにはパラメータに「開始インデックス」と「終了インデックス」を指定する。
・開始インデックスと終了インデックスを指定すると、「開始インデックス~終了インデックスまで」が検索範囲となる。
・開始インデックスのみを指定すると、「開始インデックス~末尾まで」が検索範囲となる。

● index()は1次元(List)リストだけでなく、多次元List(リスト)に対しても使用できる。

● index()はList(リスト)以外の他のイテレータにも使用できる。
(タプル以外のイテレータにはlist()を使用して一時的に変換する必要がある)

● index()は他の関数と組み合わせて使用することができる。
・max()と組み合わせて使用するとリストから最大要素のインデックスを取得する。
・min()と組み合わせて使用するとリストから最小要素のインデックスを取得する。

●index()以外にも下記の関数でList(リスト)から要素のインデックスを取得できる。
・Numpy.where()
・more_itertools.locate()

● index()を文字列に対して使用すると、一致した文字の番号を返す。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です