You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为sort函数生成的排序输出添加排名编号?

给排序后的输出添加排名编号(基于Python sort函数)

嘿,这个需求挺实用的,我来给你分享几种实现方式,分情况来看:

一、无并列值的简单排名(最常用)

如果你的排序对象没有重复值,直接用enumerate()配合排序函数就能搞定,它可以帮你自动生成从指定数字开始的序号。

示例代码(用sorted()返回新列表):

# 示例输入:分数列表
scores = [85, 92, 78, 90, 88]
# 降序排序(升序的话去掉reverse=True)
sorted_scores = sorted(scores, reverse=True)

# 用enumerate从1开始计数,遍历输出排名和对应值
for rank, score in enumerate(sorted_scores, start=1):
    print(f"排名第{rank}:{score}")

示例代码(用list.sort()原地排序):

如果你不想生成新列表,想直接修改原列表,就用sort()方法:

scores = [85, 92, 78, 90, 88]
scores.sort(reverse=True)  # 原地降序排序

for rank, score in enumerate(scores, start=1):
    print(f"排名第{rank}:{score}")

输出结果都会是:

排名第1:92
排名第2:90
排名第3:88
排名第4:85
排名第5:78

二、处理并列值的排名(进阶需求)

如果排序对象有重复值(比如多个相同分数),就需要额外逻辑来处理排名,这里给你两种常见的排名规则:

1. 跳跃式排名(相同值同排名,后续名次跳过重复数量)

比如两个92分都是第1名,下一个不同的分数直接排第3名:

scores = [92, 92, 90, 88, 88, 78]
sorted_scores = sorted(scores, reverse=True)

current_rank = 1
prev_score = sorted_scores[0]
print(f"排名第{current_rank}:{prev_score}")

for idx in range(1, len(sorted_scores)):
    if sorted_scores[idx] != prev_score:
        current_rank = idx + 1  # 索引从0开始,idx+1是当前位置的实际序号
        prev_score = sorted_scores[idx]
    print(f"排名第{current_rank}:{sorted_scores[idx]}")

输出结果:

排名第1:92
排名第1:92
排名第3:90
排名第4:88
排名第4:88
排名第6:78

2. 连续式排名(相同值同排名,后续名次连续递增)

比如两个92分都是第1名,下一个不同的分数排第2名:

scores = [92, 92, 90, 88, 88, 78]
sorted_scores = sorted(scores, reverse=True)

current_rank = 1
prev_score = sorted_scores[0]
repeat_count = 1
print(f"排名第{current_rank}:{prev_score}")

for idx in range(1, len(sorted_scores)):
    if sorted_scores[idx] == prev_score:
        repeat_count += 1
    else:
        current_rank += repeat_count
        repeat_count = 1
        prev_score = sorted_scores[idx]
    print(f"排名第{current_rank}:{sorted_scores[idx]}")

输出结果:

排名第1:92
排名第1:92
排名第2:90
排名第3:88
排名第3:88
排名第4:78

你可以根据自己的实际需求选择对应的方式,要是还有其他特殊场景,随时补充细节就行~

内容的提问来源于stack exchange,提问作者Eileen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 08:13:08