首页 > Python资料 博客日记
Python 列表 sort()函数使用理解
2024-10-29 05:00:07Python资料围观38次
目录
前言
在Python编程的广阔领域中,列表(List)是一种非常基础且强大的数据结构。它允许我们存储多个元素,并按需进行访问、修改和操作。在这些操作中,对列表进行排序是一个常见的需求,而Python的sort()
函数正是为了满足这一需求而设计的。
sort()
函数是Python内置的一种排序方法,它直接作用在列表上,对列表中的元素进行原地排序,即不生成新的列表,而是在原列表上进行修改。这一特性使得sort()
函数在处理大型数据集时具有显著的性能优势,因为它避免了在内存中创建新的列表对象。
然而,仅仅知道sort()
函数的基本用法是远远不够的。要真正掌握它,我们需要深入理解其工作原理、参数选项以及与其他排序方法的比较。在本篇文章中,我们将详细探讨sort()
函数的各个方面,包括它的基本使用、参数设置、返回值类型,以及如何通过自定义排序规则来满足特定需求。
首先,我们将从sort()
函数的基本语法和用法入手,介绍如何对列表进行升序和降序排序。接着,我们将探讨sort()
函数的参数选项,如key
和reverse
,以及它们如何影响排序结果。此外,我们还将比较sort()
函数与其他排序方法(如sorted()
函数和内置排序算法)的异同,帮助读者选择最适合自己需求的排序方法。
最后,我们将通过一些实际案例来展示如何应用sort()
函数解决具体问题。这些案例将涉及不同的数据类型和排序需求,旨在帮助读者更好地理解和掌握sort()
函数的使用方法。
通过本文的学习,读者将能够深入理解Python列表的sort()
函数,并掌握其在实际编程中的应用。无论你是Python初学者还是有一定经验的开发者,相信本文都能为你带来有价值的启示和帮助。
首先我们要知道sort() 可以对列表进行「排序」
语法
list.sort( key, reverse )
参数
key :#(可选)指定排序规则
reverse :#(可选)升序降序
返回值
返回None,同时将原列表排序。也就是没有返回值
案例:将列表中的元素排序
1.list1 = [1, 3, 2, 5]
2.list1.sort()
3.print(list1)
输出:
[1, 2, 3, 5]
1、升序降序
reverse 参数控制排序的「升序」和「降序」,True表示降序、False表示升序;默认升序reverse=False
1.list1 = [1, 3, 2, 5]
2.list1.sort(reverse=True)
3.print(list1)
4.list1.sort(reverse=False)
5.print(list1)
6.list1.sort()
7.print(list1)
输出:
[5, 3, 2, 1]
[1, 2, 3, 5]
[1, 2, 3, 5]
2、sort()和sorted()的区别
接收 sort() 的返回值,可以发现是None
输出:
1.list1 = [1, 3, 2, 5]
2.list2 = list1.sort()
3.print(list2
输出:
None
打印一下排序前、后的「内存地址」,可以发现地址没有改变
list1 = [1, 3, 2, 5]
print(id(list1))
list1.sort()
print(id(list1))
输出:
2361470487744
2361470487744
sort() 的设计思想就是「修改」原列表,而不是返回新的列表;
它不会创建新的列表,从而节省「效率」;
当然,这也意味着原列表被修改了,使用时要留意这一点;
sorted() 是 sort() 的扩展函数,可以对列表的元素排序,同时不会修改原列表。
list1 = [1, 3, 2, 5]
list2 = sorted(list1)
print(list1)
print(list2)
输出:
[1, 3, 2, 5]
[1, 2, 3, 5]
从结果可以看到, sorted() 创建了新的列表,用来保存排序后的列表。
3、切片排序
将原列表「切片」复制给新列表,再对新列表排序,同样可以实现排序且不改变原列表。
list1 = [1, 3, 2, 5]
list2 = list1[:]
list2.sort()
print(list1)
print(list2)
输出:
[1, 3, 2, 5]
[1, 2, 3, 5]
直接「赋值」的方式是不行的,因为赋值的话,两个列表会指向同一个内存地址,原列表会同步变化。
list1 = [1, 3, 2, 5]
list2 = list1
list2.sort()
print(list1)
print(list2)
输出:
[1, 2, 3, 5]
[1, 2, 3, 5]
4、指定排序规则
key 参数可以指定排序「规则」
4.1、按字符串长度排序
对于元素全是字符串的「列表」,可以按照字符串的「长度」来排序
list1 = ['aaaaa', 'aa', 'aaaa', 'a']
list1.sort(key=len)
print(list1)
输出:
['a', 'aa', 'aaaa', 'aaaaa']
本质上是利用字符串的 len() 函数计算长度,再排序,如果遇到 int 这列没有 len() 函数的元素,是会报错 TypeError: object of type ‘int’ has no len()。
4.2、按第二个字符排序
对于元素全是字符串的列表,可以按照元素的第几个「字符」排序。
list1 = ['cb', 'fa', 'zd', 'ec']
list1.sort(key=lambda x: x[1])
print(list1)
输出:
['fa', 'cb', 'ec', 'zd']
需要注意的是,所有元素的字符长度都要够数,比如元素只有1个字符,却按照第2个字符排序,函数找不到第2个字符,肯定会报错 IndexError: string index out of range
4.3、查找第n大的元素
先降序,再按照「索引」取值,就能获取列表中第一大的值或第二大的值等。
list1 = [4, 3, 9, 6, 1]
list1.sort(reverse=True)
print('最大的元素:', list1[0])
print('第二大的元素:', list1[1])
输出:
最大的元素: 9
第二大的元素: 6
5、其他类型排序
sort() 只能对列表排序,而 sorted() 能对可迭代对象排序;所以,字符串、元组、字典等类型想排序,可以用 sorted()
str1 = "312"
print(sorted(str1))
tuple1 = (5, 1, 3)
print(sorted(tuple1))
dict1 = {"key1": 1, "key2": 2}
print(sorted(dict1))
输出:
['1', '2', '3']
[1, 3, 5]
['key1', 'key2']
从输出结果可以发现,字符串、元组、字典类型排序后,返回的是列表类型;并且字典只对键排序,不对值排序。
总结
在本文中,我们深入探讨了Python列表的sort()
函数,这是一种强大且灵活的工具,用于对列表中的元素进行排序。sort()
函数直接修改原始列表,进行原地排序,这使其在处理大型数据集时具有显著的性能优势。
首先,我们介绍了sort()
函数的基本语法和用法,包括如何对列表进行默认的升序排序。接着,我们详细讨论了sort()
函数的两个重要参数:key
和reverse
。key
参数允许我们指定一个函数,该函数将用于在比较元素时提取用于排序的键;而reverse
参数则用于控制排序的顺序,设置为True
时进行降序排序。
此外,我们还比较了sort()
函数与sorted()
函数之间的区别。虽然两者都用于排序,但sorted()
函数会返回一个新的已排序列表,而不修改原始列表。这使得sorted()
函数在需要保留原始列表顺序的场合下特别有用。
最后,我们通过实际案例展示了如何应用sort()
函数解决特定问题。这些案例涵盖了从简单到复杂的排序需求,包括处理数字、字符串和自定义对象等数据类型。通过这些案例,我们展示了如何使用key
参数来定义自定义的排序规则,以满足不同场景下的需求。
综上所述,Python列表的sort()
函数是一种强大且灵活的工具,它允许我们根据特定规则对列表中的元素进行排序。通过深入理解其工作原理、参数选项以及与其他排序方法的比较,我们可以更好地掌握其使用方法,并在实际编程中灵活运用。无论是处理简单的数字列表还是复杂的自定义对象列表,sort()
函数都能为我们提供高效且可靠的排序解决方案
标签:
相关文章
最新发布
- 【Python】selenium安装+Microsoft Edge驱动器下载配置流程
- Python 中自动打开网页并点击[自动化脚本],Selenium
- Anaconda基础使用
- 【Python】成功解决 TypeError: ‘<‘ not supported between instances of ‘str’ and ‘int’
- manim边学边做--三维的点和线
- CPython是最常用的Python解释器之一,也是Python官方实现。它是用C语言编写的,旨在提供一个高效且易于使用的Python解释器。
- Anaconda安装配置Jupyter(2024最新版)
- Python中读取Excel最快的几种方法!
- Python某城市美食商家爬虫数据可视化分析和推荐查询系统毕业设计论文开题报告
- 如何使用 Python 批量检测和转换 JSONL 文件编码为 UTF-8
点击排行
- 版本匹配指南:Numpy版本和Python版本的对应关系
- 版本匹配指南:PyTorch版本、torchvision 版本和Python版本的对应关系
- Python 可视化 web 神器:streamlit、Gradio、dash、nicegui;低代码 Python Web 框架:PyWebIO
- 相关性分析——Pearson相关系数+热力图(附data和Python完整代码)
- Python与PyTorch的版本对应
- Anaconda版本和Python版本对应关系(持续更新...)
- Python pyinstaller打包exe最完整教程
- Could not build wheels for llama-cpp-python, which is required to install pyproject.toml-based proj