リスト(list)

【Python】リスト(list)の要素位置を検索する方法 ~ index ~

【Python】リスト(list)の要素位置を検索する方法 _ index _
naoki-hn

Pythonのリスト(list)の要素位置を検索する方法(indexメソッド)について解説します。

リスト (list) の要素位置を返す index

Pythonでリスト中の特定要素が入っている位置を取得するにはindexメソッドを使用します。

indexメソッドの基本的な使い方

リストのindexメソッドの基本的な使い方を簡単な例を使用して説明します。

# リスト内の特定要素の位置を確認する
data = ["A", "B", "C", "A", "B", "C", "D"]

idx = data.index("B")
print(f"idx: {idx}, data[idx]: {data[idx]}")
【実行結果】
idx: 1, data[idx]: B

リストの内容を先頭から順に検索をして、指定した要素が見つかった要素位置を返します。文字列のリストで説明していますが、数値のリスト等でも同様です。

上記例の場合、リストの中には複数の"B"が含まれていますが、indexメソッドでは一番最初に検索された要素位置が返却される点に注意してください。

リストの検索開始位置、検索終了位置を指定する方法

indexメソッドでは、引数としてリストの検索開始位置と検索終了位置を指定することもできます。開始位置と終了位置を指定することで、リスト内の指定範囲の中を先頭から順に検索をして見つかった要素位置を返すことができます。

検索終了位置については省略した場合、リストの最後まで検索されます。

# 開始位置と終了位置を指定する。
data = ["A", "B", "C", "A", "B", "C", "D"]

idx = data.index("B", 2, 5)
print(f"idx: {idx}, data[idx]: {data[idx]}")
【実行結果】
idx: 4, data[idx]: B

開始位置と終了位置の指定方法は、リストのスライス構文と同じです。終了位置は対象に含まれないことに注意してください。上記例では、検索対象となるのは2~4番目の["C", "A", "B"]であり、5番目の"C"は対象に含まれていません。

indexメソッドの例外処理

indexメソッドは、list(リスト)の中に指定した要素が見つからなかった場合に、ValueError例外を返します。要素が見つからなかった場合の処理については、tryexceptで例外処理するようにしましょう。

# 要素が含まれていない場合の処理
data = ["A", "B", "C", "A", "B", "C", "D"]

try:
    idx = data.index("Z")
except ValueError as ex:
    print("Error:", ex)
【実行結果】
Error: 'Z' is not in list

例外処理については「例外処理(exception)の基本 ~ try, except, raise ~」にまとめていますので参考にしてください。

複数の要素位置を取得したい場合の対応方法

indexメソッドは、リストを先頭から順に検索をして見つかった要素位置のみを返します。しかし、リストの中に複数同じ要素が含まれていた場合には、すべての要素位置が知りたくなる場合があります。

このような場合の簡単な方法としては、以下例のようにリスト内包表記を用いる方法があります。

# 複数の要素位置を取得したい場合
data = ["A", "B", "C", "A", "B", "C", "D", "A", "B"]

idx_list = [i for i, d in enumerate(data) if d == "B"]
print(f"idx_list: {idx_list}")
【実行結果】
idx_list: [1, 4, 8]

上記例では、enumerate関数を使って要素位置と値をfor文で取り出し、検索対象と一致する要素位置リストを生成することで実現しています。

リスト内包表記について確認したい場合は「リスト(list)内包表記の使い方」にまとめていますので興味があれば参考にしてください。

まとめ

Pythonのリスト(list)の要素位置を検索する方法について解説しました。リスト中の特定の要素が入っている位置を取得する場合は、indexメソッドを使用します。

indexメソッドの基本的な使い方、例外処理、複数要素位置を取得したい場合の対処法などについて説明しました。

リスト内の要素位置を検索することはリスト操作の基本の一つなのでしっかりと使えるようになってください。

ソースコード

上記で紹介しているソースコードについては GitHub にて公開しています。参考にしていただければと思います。

あわせて読みたい
【Python Tech】プログラミングガイド
【Python Tech】プログラミングガイド
ABOUT ME
ホッシー
ホッシー
システムエンジニア
はじめまして。当サイトをご覧いただきありがとうございます。 私は製造業のメーカーで、DX推進や業務システムの設計・開発・導入を担当しているシステムエンジニアです。これまでに転職も経験しており、以前は大手電機メーカーでシステム開発に携わっていました。

プログラミング言語はこれまでC、C++、JAVA等を扱ってきましたが、最近では特に機械学習等の分析でも注目されているPythonについてとても興味をもって取り組んでいます。これまでの経験をもとに、Pythonに興味を持つ方のお役に立てるような情報を発信していきたいと思います。どうぞよろしくお願いいたします。

※キャラクターデザイン:ゼイルン様
記事URLをコピーしました