1. ホーム
  2. python

[解決済み】整数のリストから、指定された値に最も近い数を得る

2022-02-13 10:50:27

質問

整数のリストが与えられたとき、入力で与えた数字に最も近い数字を見つけたい。

>>> myList = [4, 1, 88, 44, 3]
>>> myNumber = 5
>>> takeClosest(myList, myNumber)
...
4

何か手っ取り早い方法はないでしょうか?

どのように解決するのですか?

リストがソートされているかどうかがわからない場合は 組み込み min() 機能 のように、指定された番号からの距離が最小となる要素を見つけることができます。

>>> min(myList, key=lambda x:abs(x-myNumber))
4

のような int キーを持つディックでも動作することに注意してください。 {1: "a", 2: "b"} . この方法は、O(n)の時間を要する。


リストがすでにソートされている場合、あるいは配列を一度だけソートする代償を払える場合、次の図で示される二等分法を使用します。 Lauritzの回答 これは、O(log n)の時間しかかかりません(ただし、リストがすでにソートされているかどうかのチェックはO(n)、ソートはO(n log n)です)。