Python sorted() 函数详解与排序实例:升序、降序及自定义排序

Leo
Leo
发布时间:2026-10-12| 5人浏览过
原创

本文深入解析Python内置sorted()函数的使用方法,对比其与list.sort()的区别,详细讲解iterable、key及reverse参数的应用。通过数值排序、绝对值排序及二维列表按特定规则排序的实例,展示如何灵活处理复杂数据结构,帮助开发者掌握高效排序技巧。

选择题

以下Python代码的输出结果是什么?

a = [2,3,1]
sorted(a)
print(a)

A a B [3, 2, 1] C [2, 3, 1] D [1, 2, 3]

问题解析

1. sorted()函数能够对所有可迭代对象执行排序操作。在本题中,sorted()函数返回一个新的有序序列,而不会修改原始数据的顺序。因此,使用print()语句输出列表a时,结果仍保持a原有的排序状态。

2. sorted()是Python的内置函数,可直接调用。其语法结构(适用于Python 3.x版本)如下:

sorted(iterable, key=None, reverse=False)

各参数具体说明如下:

  • iterable:表示可迭代的对象。
  • key:通过指定此参数,可以定义自定义的排序逻辑。
  • reverse:用于指定排序规则,设置为True表示降序,设置为False表示升序(这是默认值)。

3. sorted()函数会返回一个经过重新排序的列表。它与sort()函数的主要区别在于:sort()是列表对象的方法,而sorted()适用于所有可迭代对象。此外,使用sort()对列表进行排序会直接修改原列表,而sorted()则不会改变原对象。

4. 需要注意的是,虽然sorted()可以处理集合、元组、数组等各种可迭代对象,但其返回值始终是一个列表。因此,如果返回结果需要保持与输入相同的类型,必须将其转换为新的目标类型。

答案

正确答案是:C

代码及运行结果如下:

附:sorted函数超详细用法指南

例1. sort()函数的两种应用场景:按数值大小排序以及按绝对值大小排序。

list1=[3,-4,2,4]
print(sorted(list1))  # 输出[-4, 2, 3, 4]
print(sorted(list1,key=lambda x:(abs(x),x),reverse=True)) # 输出[4, -4, 3, 2]
 
print(list1)          # 输出[3, -4, 2, 4]

注意:sorted(list1)返回的是一个新列表,原列表list1的值保持不变。

若需直接修改原列表,需进行额外赋值操作:list1 = sorted(list1)。

例2. 二维列表按照第二个元素升序排序(此处模拟按动物重量排序,其中1t = 1000kg)。

原始列表:s = [['北极熊', '0.75t'], ['企鹅', '35kg'], ['海豹', '1.35t']]。

期望返回的排序后列表:[['企鹅', '35kg'], ['北极熊', '0.75t'], ['海豹', '1.35t']]。

s=[['北极熊', '0.75t'] , ['企鹅', '35kg'] ,  ['海豹', '1.35t']]
# 法一:使用sorted(list,key=...)
s1=sorted(s,key=lambda x:float(x[1][:-1]) * 1000 if x[1][-1] == 't' else float(x[1][:-2]))
print(s1)
 
# 法二:使用list.sort(key=...)
s.sort(key=lambda x:float(x[1][:-1]) * 1000 if x[1][-1] == 't' else float(x[1][:-2]))
print(s)

逻辑解释:

x[1]指代二维列表中每个一维列表索引为1的元素(即第二个元素)。

如果x[1][-1]等于't',则重量部分x[1][:-1]需乘以1000,转换为kg单位;

否则直接提取kg前面的数字x[1][:-2]。

总结

至此,关于Python中排序函数sorted()的使用介绍完毕。如需了解更多Python排序函数sorted()的相关内容,请搜索本站历史文章或继续浏览后续文章。感谢大家的支持!

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。