とのタプルをソートする方法を私はタプルcoordsの持っている:
ラムダ
[(1, 2), (3, 2), (1, 4)]
をそして私はまた、単一のCOORD持っている:私は間の距離に応じて上記のタプルをソートする必要がある今(8, 7)
をタプル内の各点と単一点。
sorted()
でこれを行う方法は?
とのタプルをソートする方法を私はタプルcoordsの持っている:
ラムダ
[(1, 2), (3, 2), (1, 4)]
をそして私はまた、単一のCOORD持っている:私は間の距離に応じて上記のタプルをソートする必要がある今(8, 7)
をタプル内の各点と単一点。
sorted()
でこれを行う方法は?
基本的には、ポイントpt
とリスト内の各タプルの間のユークリッド距離を計算することができます。関数numpy.hypot
はこれを行うことができますが、望むなら実装するのは自明です。
>>> from numpy import hypot
>>> l = [(1, 2), (3, 2), (1, 4)]
>>> pt = [8,7]
>>> sorted(l, key = lambda i: hypot(i[0]-pt[0], i[1]-pt[1]))
[(3, 2), (1, 4), (1, 2)]
あなたがnumpyのを使用したいと、それは純粋なPythonので終わらせたくない場合は、
>>> array = [(1, 2), (3, 2), (1, 4)]
>>> point = [8, 7]
>>> array.sort(key = lambda k: (k[0] - point[0])**2 + (k[1] - point[1])**2)
>>> array
[(3, 2), (1, 4), (1, 2)]
あなたは(AB)は、他のインポートを避けるために、 'complex'タイプを使用することができます。 'ソート済み(l、key =ラムダx:abs(コンプレックス(* x) - コンプレックス(* pt))' – chepner