如何用for循环的结果生成数组,并在Python中比较数组的索引?

2024-06-15 09:44:02 发布

您现在位置:Python中文网/ 问答频道 /正文

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

从一个坐标列表中,我想要那些有最大距离的坐标。我想把它解决为下图:-你知道吗

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

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

3-然后我想用[[a,b,d1],[a,c,d2]…]的值创建一个数组

4-然后我想比较一下距离,看看在所有对中哪个有最大的距离,即element max([:,2])

最后,我想要一个最大距离的坐标输出

任何帮助都将不胜感激


Tags: 函数距离列表数组element动力学分子max
1条回答
网友
1楼 · 发布于 2024-06-15 09:44:02

这里有一种可能的方法:首先使用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))

相关问题 更多 >