【Python】リストから値を検索する方法

この記事では、Pythonでリストから値を検索する方法について解説します。

線形検索、二分検索、インデックスを使用した検索の方法を学ぶことで、効率的にリスト内の値を見つけることができます。

目次から探す

リストから値を検索する方法

リストはPythonでよく使用されるデータ構造の一つであり、複数の要素を格納することができます。

リスト内に特定の値が存在するかどうかを検索することは、プログラミングにおいてよく行われる操作です。

ここでは、Pythonでリストから値を検索する方法について解説します。

線形検索

線形検索は、リストの先頭から順番に要素を比較し、目的の値を見つけるまで繰り返し処理を行う方法です。

以下に線形検索のサンプルコードを示します。

def linear_search(lst, target):
    for i in range(len(lst)):
        if lst[i] == target:
            return i
    return -1

# 使用例
my_list = [1, 3, 5, 7, 9]
target_value = 5
result = linear_search(my_list, target_value)
print(f"目的の値 {target_value} はリスト内のインデックス {result} に存在します。")

上記のコードでは、linear_searchという関数を定義し、リストと目的の値を引数として受け取ります。

関数内では、forループを使用してリストの要素を順番に比較し、目的の値が見つかった場合はそのインデックスを返します。

もし目的の値が見つからなかった場合は、-1を返します。

二分検索

二分検索は、ソートされたリストを対象に行われる検索方法です。

リストの中央の要素と目的の値を比較し、目的の値が中央の要素よりも小さいか大きいかで、検索範囲を絞り込んでいきます。

以下に二分検索のサンプルコードを示します。

def binary_search(lst, target):
    low = 0
    high = len(lst) - 1

    while low <= high:
        mid = (low + high) // 2
        if lst[mid] == target:
            return mid
        elif lst[mid] < target:
            low = mid + 1
        else:
            high = mid - 1

    return -1

# 使用例
my_list = [1, 3, 5, 7, 9]
target_value = 5
result = binary_search(my_list, target_value)
print(f"目的の値 {target_value} はリスト内のインデックス {result} に存在します。")

上記のコードでは、binary_searchという関数を定義し、リストと目的の値を引数として受け取ります。

関数内では、whileループを使用して検索範囲を絞り込んでいきます。

中央の要素と目的の値を比較し、目的の値が中央の要素よりも小さい場合は検索範囲を左側に絞り込み、大きい場合は右側に絞り込みます。

目的の値が見つかった場合はそのインデックスを返し、見つからなかった場合は-1を返します。

インデックスを使用した検索

Pythonのリストは、インデックスを使用して要素にアクセスすることができます。

そのため、リスト内に特定の値が存在するかどうかを調べるためには、単純にインデックスを使用する方法もあります。

以下にインデックスを使用した検索のサンプルコードを示します。

def index_search(lst, target):
    try:
        index = lst.index(target)
        return index
    except ValueError:
        return -1

# 使用例
my_list = [1, 3, 5, 7, 9]
target_value = 5
result = index_search(my_list, target_value)
print(f"目的の値 {target_value} はリスト内のインデックス {result} に存在します。")

上記のコードでは、index_searchという関数を定義し、リストと目的の値を引数として受け取ります。

関数内では、indexメソッドを使用して目的の値のインデックスを取得します。

もし目的の値が見つからなかった場合は、ValueErrorが発生するため、try-except文を使用して例外処理を行い、-1を返します。

以上がPythonでリストから値を検索する方法です。

線形検索、二分検索、インデックスを使用した検索のそれぞれの方法を使い分けることで、効率的にリスト内の値を検索することができます。

目次から探す