当前位置: 首页 > 知识库问答 >
问题:

尝试用reduce来设置两个元组之间的距离

终祯
2023-03-14

我试图用reduce计算两个元组之间的距离,但出现错误-:'tuple'和'tuple'的操作数类型不受支持。我不知道怎么才能通过这个问题。

我有这个代码

import functools 

coordenates1 = [(38.7452, -9.1604), (38.5243, -8.8926), (40.2111, -8.4291), (40.6389, -8.6553), (40.6667, -7.9167), (41.1495, -8.6108)]

def distance(coordenates):
    distanceBetween = functools.reduce(lambda x,y: math.sqrt(((y-x)**2)+((y+1)-(x+1)**2)),coordenates)
    return list(distanceBetween)

distance(coordenates1)

共有1个答案

葛景龙
2023-03-14

最pythonic的方法是使用列表理解和一个zip-of-slices技巧来枚举连续的对:

import math
def dist(p1,p2):
    return math.sqrt((p1[0]-p2[0])**2 +(p1[1]-p2[1])**2)

coordenates1 = [(38.7452, -9.1604), (38.5243, -8.8926), (40.2111, -8.4291), (40.6389, -8.6553), (40.6667, -7.9167), (41.1495, -8.6108)]

distances = [dist(p,q) for p,q in zip(coordenates1[1:],coordenates1)]

print(distances) #prints [0.347150759757198, 1.749321722840032, 0.4839207373113889, 0.7391229938244387, 0.8455002365463915]
 类似资料:
  • 问题内容: 我对计算两个numpy数组(x和y)之间的各种空间距离感兴趣。 http://docs.scipy.org/doc/scipy-0.14.0/reference/generation/scipy.spatial.distance.cdist.html 但是,以上结果会产生太多不必要的结果。我如何仅将其限制为所需的结果。 我想计算[1,11]和[31,41]之间的距离;[2,22]和[3

  • 我想写一个函数来计算中的坐标与中的每个坐标之间的欧氏距离,并通过列生成维度行的距离数组(其中是中的坐标数,是中的坐标数)。 NB:为了简单起见,我不想使用任何其他库。 运行该函数将生成: 我一直在试着运行下面的程序 但我得到以下错误: 非常感谢。

  • 我有http://www.codereye.com/2010/10/how-to-calculate-distance-between-2.html的这段代码,它根据两个IP地址对应的纬度和经度计算它们之间的大致物理距离。 lat和long是有符号值。但是,此代码有时会将dist返回为NaN。 我错过什么了吗?θ需要是绝对值吗? 更新:返回南的测试值:- lat1=-23.5477,lon1=-4

  • 我试图将X Y Z变量的数组或列表传递给计算欧几里德距离的方法。 这是我的方法: 这是我的主要代码: 输出为:1.7782794。。应该是10的时候。有什么想法吗?

  • 问题内容: 我有这样的代码: 这样,我得到的元素之间没有距离。我的意思是,“顶部”元素总是触及“底部”元素。我该如何更改?我想在元素之间进行一些分离吗? 我考虑在元素之间添加一些“中间” JPanel(具有一定大小)。但是我认为这不是获得理想效果的一种优雅方法。有人可以帮我吗? 问题答案: 将是这样做的一种方式。

  • 我想用C++实现这样一个算法,但是任何对解决方案的描述都会很有帮助。