gpt4 book ai didi

python - 如何在 Python 中遍历坐标列表并计算它们之间的距离

转载 作者:太空狗 更新时间:2023-10-30 01:01:42 24 4
gpt4 key购买 nike

我有一个包含 20 个坐标(x 和 y 坐标)的列表。我可以计算任意两个坐标之间的距离,但是我很难编写一个算法来遍历列表并计算第一个节点与所有其他节点之间的距离。例如,

ListOfCoordinates = [(1,2), (3,4), (5,6), (7,8), (9,10), (11,12)]

在这种情况下,我需要一个 for 循环来交互列表并计算第一个坐标和第二个坐标之间的距离、第一个坐标和第三个坐标之间的距离等。我需要一个算法来帮助我, 然后我会把它转化成 python 代码。谢谢

感谢大家的反馈。这很有帮助。

最佳答案

每当您需要面向组合的东西时(“我需要第一和第二,然后是第一和第三,然后……”)itertools 模块很可能有您需要的东西。

from math import hypot

def distance(p1,p2):
"""Euclidean distance between two points."""
x1,y1 = p1
x2,y2 = p2
return hypot(x2 - x1, y2 - y1)

from itertools import combinations

list_of_coords = [(1,2), (3,4), (5,6), (7,8), (9,10), (11,12)]

[distance(*combo) for combo in combinations(list_of_coords,2)]
Out[29]:
[2.8284271247461903,
5.656854249492381,
8.48528137423857,
11.313708498984761,
14.142135623730951,
2.8284271247461903,
5.656854249492381,
8.48528137423857,
11.313708498984761,
2.8284271247461903,
5.656854249492381,
8.48528137423857,
2.8284271247461903,
5.656854249492381,
2.8284271247461903]

编辑:你的问题有点令人困惑。以防万一您只想将第一点与其他点进行比较:

from itertools import repeat

pts = [(1,2), (3,4), (5,6), (7,8), (9,10), (11,12)]

[distance(*pair) for pair in zip(repeat(pts[0]),pts[1:])]
Out[32]:
[2.8284271247461903,
5.656854249492381,
8.48528137423857,
11.313708498984761,
14.142135623730951]

但通常在这类问题中,您会关心所有组合,所以我会把第一个答案留在那里。

关于python - 如何在 Python 中遍历坐标列表并计算它们之间的距离,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23086078/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com