我试图获取一个点的给定半径内的玩家列表,并按照他们到该点的距离排序。 获取玩家很简单:将列表元素添加到正确的排序位置
players = [
player for player in Player.instances
if player.distance(my_point) <= max_radius
]
和排序它去也没关系:
return sorted(players, key=lambda player: player.get_distance(my_point))
但是,调用player.distance(my_point)
大家可能会变得沉重,如果服务器的全面的球员,所以选球员事后总是需要一些额外的时间。 有没有办法在追加玩家的同时自动排序列表,所以我不需要在每个人中循环两次,然后拨打getdistance
两次?
您的目标是找到最接近的球员,还是始终让所有球员以完全排序的顺序? – 2015-02-23 11:30:07
即使你这样做,你仍然会排序。 – 2015-02-23 11:30:40
@MartijnPieters我试图创建一个函数,返回一个点的半径范围内的所有玩家,按照他们到那个点的距离排序。 – 2015-02-23 11:31:43