【发布时间】:2009-04-08 04:38:53
【问题描述】:
给定多个 (x,y) 有序对,我想比较它们之间的距离。 所以假设我有一个有序对的列表:
pairs = [a,b,c,d,e,f]
我有一个函数,它接受两个有序对并找到它们之间的距离:
def distance(a,b):
from math import sqrt as sqrt
from math import pow as pow
d1 = pow((a[0] - b[0]),2)
d2 = pow((a[1] - b[1]),2)
distance = sqrt(d1 + d2)
return distance
如何使用此函数将每个有序对与其他每个有序对进行比较,最终找到它们之间距离最大的两个有序对?
伪代码:
distance(a,b)
distance(a,c)
...
distance(e,f)
任何帮助将不胜感激。
【问题讨论】:
-
“from math import sqrt as sqrt”与“from math import sqrt”完全相同。前者就像说“嗨,我叫罗伯托,但请叫我罗伯托”:)
-
也可以省略数学模块,使用
** 0.5 -
我怀疑你真的想要无序对,因为你的距离函数是对称的..
-
@John:听起来不错。此外,他的示例在距离(e,f)处停止——如果他想要有序对,最后一个将是距离(f,e)。
-
一个小提示:如果您不关心实际距离是多少(只是它们是相距最远的两对),您可以消除平方根以加快速度。平方是单调的,并且对于大于或等于 0 的值增加。即 x > y 当且仅当 xx > yy 对于 x, y >= 0。
标签: python iteration round-robin