如何用for循环的结果创建一个数组并比较Python中的数组索引?

时间:2016-10-27 17:02:20

标签: python algorithm max

我有以下问题(我是python中的初学者)

从坐标列表中,我想要那些距离最大的坐标。我想解决它如下: -

1-我有一个坐标列表C = [a,b,c,d]

2-我想计算每个坐标对之间的距离(d);这个距离是用Molecular Dynamics库的函数计算的,所以我需要使用它

3-然后我想创建一个数组为[[a,b,d1],[a,c,d2] ....]的数组。

4-然后我想比较距离,看看哪一对有最大距离,即元素max([:,2])

5-最后我想要一个具有最大距离

的坐标输出

任何帮助将不胜感激

1 个答案:

答案 0 :(得分:1)

这是一种可能的方法:首先使用<use>来制作坐标的所有可能的两个坐标组合。然后根据坐标对之间的距离对它们进行排序。将排序列表中的最后一个作为最大距离对:

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])