整数のリストとターゲット数値が与えられた場合、タスクは、リスト内の数値を見つけることです。ターゲットに最も近いです。この問題は、さまざまなアプローチを使用して解決できます。
リスト内の要素の順序が保証されていない場合は、key パラメーターを指定した min() 関数を使用できます。このメソッドは、各要素とターゲットの間の最小距離を見つけて、最小距離を持つ要素を返します。
def takeClosest(myList, myNumber): return min(myList, key=lambda x: abs(x - myNumber))
リストが既知の場合並べ替えると、二分検索を適用して、O(log n) 時間でより効率的に最も近い数値を見つけることができます:
def takeClosest(myList, myNumber): low = 0 high = len(myList) - 1 while low <= high: mid = (low + high) // 2 if myList[mid] == myNumber: return myList[mid] elif myList[mid] < myNumber: low = mid + 1 else: high = mid - 1 return min([myList[low], myList[high]], key=lambda x: abs(x - myNumber))
以上がリスト内で指定された値に最も近い数値を見つけるにはどうすればよいでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。