use*_*835 0 python sorting list
假设您有一个向量列表 - 例如:
myListOfVectors=[(10,2),(0,5),(3,2),(8,2),(9,5),(10,5]
Run Code Online (Sandbox Code Playgroud)
将这些向量从小到大排序的最快方法是什么(假设距原点的最小距离将是列表的第一个成员,第二小的距离将是第二个成员等......)?
def sqdist(vector)
return sum(x*x for x in vector)
myListOfVectors.sort(key=sqdist)
Run Code Online (Sandbox Code Playgroud)
结果是:
>>> myListOfVectors
[(3, 2), (0, 5), (8, 2), (10, 2), (9, 5), (10, 5)]
Run Code Online (Sandbox Code Playgroud)
我使用平方距离,因为您实际上并没有在任何地方使用该距离,并且计算平方根的成本相当高。