我試圖獲取一個點的給定半徑內的玩家列表,並按照他們到該點的距離排序。 獲取玩家很簡單:將列表元素添加到正確的排序位置
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