ソートされていないサイズの2次元タプルのリストがありn
ます。XとYに最も近い寸法のタプルを見つけたいのですが、これを行うための最良の方法は何ですか?
target = (75, 75)
values = [
(38, 61),
(96, 36),
(36, 40),
(99, 83),
(74, 76),
]
とを使用するtarget
とvalues
、メソッドは答えを生成する必要があります(74, 76)
。
編集
以下の答えは、ここに着陸する人のために、この正確な方法に私を導きます:
def distance(item, target):
return ((item[0] - target[0]) ** 2 + (item[1] - target[1]) ** 2) ** 0.5
best = min(values, key=lambda x: distance(x, target))
これはデカルト距離の問題です。
- まず、テスト値の2乗
x
から最適x
値を引いたものを取ります。 - 次に、テスト値の2乗
y
から最適y
値を引いたものを取ります。 - 最後に、ステップ1とステップ2の平方根を取ります。これにより、距離がわかります。
- これをリスト内のすべてのアイテムに適用すると、(
min
関数を使用して)最小の数値が最適になります。