2017-11-27 11 views
1

私は、座標がxy = [(x_1, y_1), (x_2, y_2), ...]のタプルのリストと特定のポイントxy_sp = [x_sp, y_sp]を持っています。私はそれぞれの点から所謂「特定の点」までの距離を計算し、辞書を形:{coordinates_of_1st_point: distance_1, coordinates_of_2nd_point: distance_2, ...}で作成し、次に値で辞書を並べることができます。マップとラムダを使ってディクテーションの理解をエミュレートする

私はこれを機能的なpythonアプローチで実行したいと考えています。

import numpy as np 
distances = list(map(lambda k: np.linalg.norm(np.asarray(k) - np.asarray(xy)), xy)) 

をそして私はただの辞書理解作成:だから私はやった

dict_distances = {k : v for k, v in zip(xy, distances)} 

それは私が、機能的なアプローチで地図やラムダでやりたい、この最後の点はあるが、私はドン」にそれをする方法を知っている。それがすべてのコードで行えるのであれば、それは面白いだろうが、それはまったく読めるわけではないので、あまりお勧めできないと思う。

どのような提案も歓迎されます。

+3

'dict' comprehensions **は機能的なアプローチです**。理解力の構築物は純粋に機能的な言語であるハスケルから借りたものです。 –

+0

ありがとうございます。確かに、私は、 "ハスケル"アプローチがラムダ関数と組み合わされたmap、filter、reduce関数であると考えていました。 – David

答えて

3

あなただけ呼び出し、そのためlambdaを必要としない内蔵の結果にdictzipから:

dict_distances = dict(zip(xy, distances)) 

zipによって返された2組からのマッピングを作成します。

関連する問題