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

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

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

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

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

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

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




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

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

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

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

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

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

他にもリストの要素のインデックスを取得する関数はありますが、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(リスト)から要素のインデックスを取得した結果

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(リスト)から要素のインデックスを取得することができます。

多次元List(リスト)の場合、次元が異なるためアクセスする箇所によって対象のリストが異なります。

ここでは、index()で多次元List(リスト)から要素のインデックスを取得するサンプルコードを下記の3ケースでご紹介します。

  1. 指定したList(リスト)から要素のインデックスを取得する場合
  2. 各List(リスト)から要素のインデックスを取得する場合
  3. List(リスト)全体から要素のインデックスを取得する場合

指定したList(リスト)から要素のインデックスを取得する場合

index()で指定したList(リスト)から要素のインデックスを取得する場合は、繰り返し処理を使用します。

● main.py

実行結果

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

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

そのため、下記のような結果が表示されています。

  • CakePHP:4
  • [‘Ruby’]:2
  • PHP:4
  • [‘Ruby’]:2
  • [[‘JavaScript’, ‘Python’, ‘Java’, ‘C’, ‘Ruby’], [‘Swift’, ‘Ruby’, ‘Kotlin’, ‘C#’, ‘PHP’], [‘Ruby’]]:0

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

index()で各List(リスト)から要素のインデックスを取得する場合は、繰り返し処理を使用します。

繰り返し処理を使用することで、各リストの次元へアクセスでき、それらのリストに対してindex()を使用します。

● main.py

実行結果

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

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

そのため、下記のような結果が表示されています。

  • Ruby:4
  • Ruby:1
  • Ruby:0
  • Ruby:2
  • Ruby:4
  • Ruby:1
  • Ruby:0
  • Ruby:4
  • Ruby:1
  • Ruby:0

List(リスト)全体から要素のインデックスを取得する場合

List(リスト)全体から要素のインデックスを取得する場合は、リストの次元的に水平(フラット)化にします。

フラットにすることで、各次元で格納されている要素を同じ1次元リストに格納することができ、そのリストに対してindex()を使用します。

● main.py

実行結果

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

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

そのため、1次元リスト内の「Kotlin」の格納位置である「7」と、「Swifton」の格納位置である「16」が表示されています。

他の関数を組み合わせてindex()を使用する場合

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()について詳しく知りたい場合は下記の記事をご参考ください。

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

abs()と組み合わせて使用することで、リスト内の絶対値が同じ要素のインデックスを取得することができます。

● main.py

実行結果

index()とabs()でList(リスト)内の絶対値が一致する要素のインデックスを取得した結果

index()とabs()でリストから絶対値が一致する要素のインデックスを取得しています。

そのため、List(リスト)内の「17.5」の格納位置である「0」と、「968」の格納位置である「3」が表示されています。

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

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

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

● index.html

● result.html

● main.py

実行結果(検索成功時)

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

実行結果(検索失敗時)

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

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

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

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

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

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

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

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

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

タプルの場合

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

● main.py

実行結果

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

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

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

辞書(dict)型の場合

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

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

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

● main.py

実行結果

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

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

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

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

set型の場合

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

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

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

● main.py

実行結果

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

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

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

frozenset型の場合

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

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

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

● main.py

実行結果

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

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

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

文字列の場合

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

● main.py

実行結果

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

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

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

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

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モジュールの関数になります。

more_itertoolsモジュールで準備されているため、インポートすることで使用することができます。

● main.py

実行結果

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

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

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

まとめ

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

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

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

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

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

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

● index()は1次元List(リスト)だけでなく、多次元List(リスト)に対しても使用できる。
(アクセスする場所によって対象のList(リスト)が異なるため注意。)

● index()はList(リスト)以外にも使用できる。
(文字列の場合は文字の出現位置を取得する。)

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

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

コメントを残す

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