python迭代计算_如何在Python中迭代坐标列表并计算它们之间的距离
我的列表有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迭代计算_如何在Python中迭代坐标列表并计算它们之间的距离的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 练习2:课工场响应式导航条_作业帮直播课
- 下一篇: python autopy_安装pyth