如何将比赛积分列表转换为对应选手索引的排名序列
Python 按积分降序生成选手索引排名的简便实现
可以直接用Python内置的sorted()函数实现,不需要手动写循环查找最大值,代码简洁高效。
示例代码
points = [0, 12, 9] # 写法1:用负数key实现降序 rank_list = sorted(range(len(points)), key=lambda idx: -points[idx]) print(rank_list) # 输出 [1, 2, 0]
可选写法(可读性更强)
如果觉得用负数不容易理解,可以搭配sorted的reverse参数实现降序:
rank_list = sorted(range(len(points)), key=lambda idx: points[idx], reverse=True)
实现逻辑说明
- 首先用
range(len(points))生成所有选手的原始索引序列,示例中为[0, 1, 2] key参数指定排序的依据为每个索引对应的积分值reverse=True指定排序规则为降序,也就是积分高的排在前面- 若存在积分相同的选手,该写法默认按原始索引升序排列,符合常规比赛的同分排名规则。
内容的提问来源于stack exchange,提问作者Mariokaizou
相关产品推荐
相关产品推荐

