不排序原列表的嵌套列表子列表元素排名实现方案
嵌套列表元素排名实现方案
实现思路
- 不对原列表做任何修改或排序操作,仅通过统计比较实现排名
- 对每个子列表的单个元素,统计当前子列表内比该元素大的元素数量,排名结果为统计值+1,刚好符合数值越大排名越靠前的规则
代码实现
注意不要用list作为变量名,避免覆盖Python内置的list关键字:
# 原始嵌套列表 original_list = [[10, 2, 8, 4], [12, 6, 4, 1], [8, 4, 3, 2], [9, 3, 4, 6]] # 生成排名结果 result = [ [sum(1 for num in sublist if num > current_num) + 1 for current_num in sublist] for sublist in original_list ] # 验证输出 print(result)
输出结果
运行上述代码后得到的结果和预期完全一致:
[[1, 4, 2, 3], [1, 2, 3, 4], [1, 2, 3, 4], [1, 4, 3, 2]]
内容的提问来源于stack exchange,提问作者Scott Woodhall
相关产品推荐
相关产品推荐

