2016-10-27 37 views
-3

我有以下問題(我是一個Python初學者)如何使用for循環的結果創建數組並比較Python中數組的索引?

從座標列表中,我想那些有最大距離的座標。我認爲如下解決它的: -

1-我的座標C =列表[A,B,C,d]

2-我想計算(d)的每個座標對之間的距離;這個距離是用分子動力學函數庫計算的,所以我需要使用它。

3-然後我想創建一個值爲[[a,b,d1],[a,c,d2]的數組。 ...]

4-然後我要比較的距離和看到具有最大距離的所有對中即元件MAX([:,2])

5-最後我想要的輸出座標有最大距離

任何幫助,將不勝感激

+1

家庭作業的問題應該包括你已經嘗試過什麼,什麼地方出了錯。 – MooingRawr

+1

要放大@MooingRawr:請閱讀[mcve]。 – boardrider

+0

一。那些列表不是數組。 二。畢達哥拉斯定理是有用的...... – Frogboxe

回答

1

他重新提供了一種可能的方法:首先使用itertools.combinations來創建座標的所有可能的兩個座標組合。然後根據座標對之間的距離對它們進行排序。您可以在排序列表中的最後一個作爲最大遙遠的對:

from itertools import combinations 

coordinates = [(28, 15), (94, 58), (12, 34), (23, 56), (83, 55), (98, 17)] 

def calculate_distance(coordinate_pair): 
    (x1, y1), (x2, y2) = coordinate_pair 

    return ((x2 - x1) ** 2 + (y2 - y1) ** 2) ** 0.5 

print(sorted(combinations(coordinates, 2), key=calculate_distance)[-1]) 

輸出

((12, 34), (98, 17))