gpt4 book ai didi

python - 将列表元素附加到正确的排序位置

转载 作者:太空宇宙 更新时间:2023-11-04 08:57:51 29 4
gpt4 key购买 nike

我正在尝试获取一个点的给定半径内的玩家列表,并根据他们到该点的距离对他们进行排序。获取玩家很简单:

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 两次?

最佳答案

作为使用排序数据结构的替代方法(如 Martijn Pieters 所建议的),您可以将距离信息与玩家对象结合起来。您可以通过将其作为属性添加到播放器类,或通过临时将每个播放器实例与其距离信息组合来实现。例如,

players = []
for player in Player.instances:
dist = player.distance(my_point)
if dist <= max_radius:
players.append((dist, player))

#Sort in order of distance. If two distances match, sort by player.
players.sort()

#Strip out dist info
players = [v for u,v in players]

#or
players = zip(*players)[1]

关于python - 将列表元素附加到正确的排序位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28672739/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com