python 对向量列表进行排序

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)

将这些向量从小到大排序的最快方法是什么(假设距原点的最小距离将是列表的第一个成员,第二小的距离将是第二个成员等......)?

Fer*_*yer 5

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)

我使用平方距离,因为您实际上并没有在任何地方使用该距离,并且计算平方根的成本相当高。