- リスト内の数値を比較する方法:
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
関数を使用して、数値の絶対値の差を比較しています。リスト内の数値から最も近い数値が見つかります。
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で最も近い数値を取得するいくつかの方法です。これらのコード例を活用して、自分のプロジェクトに適した方法を選択してください。