Pythonで最も近い数値を取得する方法


  1. リスト内の数値を比較する方法:
def closest_number_in_list(number, lst):
    return min(lst, key=lambda x: abs(x - number))

numbers = [1, 5, 10, 15, 20]
target_number = 12
closest_number = closest_number_in_list(target_number, numbers)
print(closest_number)  # 結果: 10

この方法では、min関数とlambda関数を使用して、数値の絶対値の差を比較しています。リスト内の数値から最も近い数値が見つかります。

  1. bisectモジュールを使用する方法:
import bisect
def closest_number_bisect(number, lst):
    index = bisect.bisect_left(lst, number)
    if index == 0:
        return lst[0]
    if index == len(lst):
        return lst[-1]
    before = lst[index - 1]
    after = lst[index]
    if after - number < number - before:
        return after
    else:
        return before
numbers = [1, 5, 10, 15, 20]
target_number = 12
closest_number = closest_number_bisect(target_number, numbers)
print(closest_number)  # 結果: 10

この方法では、bisectモジュールを使用してリスト内での挿入ポイントを見つけ、それを基に最も近い数値を決定しています。

これらの方法は、リスト内の数値に限定されません。他のデータ構造や要素の集まりでも同様のアプローチが使えます。

以上が、Pythonで最も近い数値を取得するいくつかの方法です。これらのコード例を活用して、自分のプロジェクトに適した方法を選択してください。