Python 使用多维列表存储(x,y)坐标并计算距离
我试图创建一个函数:计算点(点1,点2)之间的点距离,在这里我可以得到点1和点2,作为主函数中(x,y)形式的字符串。 此函数用于计算两点之间的距离。该函数获取两个列表作为参数:第一个列表包含起点的x和y坐标,另一个列表包含终点的x和y坐标。然后返回两点之间的距离。 这是我的半成品代码:Python 使用多维列表存储(x,y)坐标并计算距离,python,list,Python,List,我试图创建一个函数:计算点(点1,点2)之间的点距离,在这里我可以得到点1和点2,作为主函数中(x,y)形式的字符串。 此函数用于计算两点之间的距离。该函数获取两个列表作为参数:第一个列表包含起点的x和y坐标,另一个列表包含终点的x和y坐标。然后返回两点之间的距离。 这是我的半成品代码: def calculate_distance_between_points(point1, point2): point_list = [] text1 = point1.split("
def calculate_distance_between_points(point1, point2):
point_list = []
text1 = point1.split(",")
text2 = point2.split(",")
for i in range(2):
row = [0.0] * 2
for j in range(1):
row[1] = float(text1[j])
row[2] = float(text2[j])
point_list.append(row)
我不确定它是否能创建我想要的列表。你能检查一下并说明如何使它工作吗?类似的东西
from scipy.spatial import distance
def calculate_distance_between_points(point1, point2):
point1, point2 = point1.split(','), point2.split(',')
point1, point2 = [float(i) for i in point1], [float(i) for i in point2]
return distance.euclidean(point1, point2)
calculate_distance_between_points('1,1', '2,2')
如果先将坐标字符串值转换为float
s,则可以使用该函数计算两点之间的欧氏距离
import math
def calculate_distance_between_points(point1, point2):
p1 = (float(v) for v in point1.split(","))
p2 = (float(v) for v in point2.split(","))
return math.hypot(*(a-b for a, b in zip(p1, p2)))
d = calculate_distance_between_points('1,1', '2,2')
print(d) # -> 1.4142135623730951
迭代每个列表和每个索引,取点1-点2的绝对值(或反之亦然)。分离字符串->数值转换和距离计算函数可能会更好,FYIThis似乎是。你问我们如何创建一个列表(Y),但是这个任务对于你真正的目标,计算两点之间的距离(X)似乎不是很有用。既然你提到了这个更大的目标(一件好事!),你应该期望得到的答案不会真正解决你关于列表列表的明确问题,因为在这个特定的上下文中想要这个答案似乎是一件愚蠢的事情。幸运的话,你也会得到解释,为什么列表没有真正的帮助。现在还不清楚你所说的“计算距离”是什么意思,你想在创建的列表中结束。请把你的问题解释清楚(和/或显示出想要的结果)。是的,但我想创建一个两个点的二维列表来思考一下。。。这可能是什么[第1点,第2点]?!?!?可能[[x1,y1],[x2,y2]]?只需使用
返回距离更改返回语句。欧几里德(point1,point2),[point1,point2]