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

LeetCode Sort the People问题:如何用单行无重复计算代码实现排序

一行代码实现按身高排序人员列表

这是LeetCode上的一道简单题,要求根据给定的身高对人员列表进行排序。比如输入:

  • names = ["Mary","John","Emma"]
  • heights = [180,165,170]
    输出应为 ["Mary","Emma","John"]

你原本的代码已经解决了问题,不过确实可以用一行函数体实现,而且不会有重复代码或重复计算:

from typing import List

def sortPeople(names: List[str], heights: List[int]) -> List[str]:
    return [name for _, name in sorted(zip(heights, names), reverse=True)]

解释:

  • zip(heights, names) 将每个身高与对应的名字打包成元组(比如 (180, "Mary")),这样身高和名字的对应关系被直接绑定,不需要额外字典存储。
  • sorted(..., reverse=True) 默认按元组的第一个元素(也就是身高)进行降序排序,省去了自定义key的写法,简洁高效。
  • 最后用列表推导式提取排序后每个元组里的名字即可,全程没有重复计算,逻辑清晰。

如果你更倾向于显式指定排序依据,也可以写成:

return [name for _, name in sorted(zip(heights, names), key=lambda x: -x[0])]

效果和上面完全一致,只是用负号实现降序排序。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 21:40:11