python排序sort()和sorted()区别?
一、概念不同
sort()和sorted()都是Python内置的排序方法。sort()是列表的一个方法,可以对列表进行排序,而sorted()是一个内置的函数,可以对任何可迭代对象进行排序,比如列表、元组、字典等。这两种排序方法都可以根据需要进行升序或降序排列。
二、用法不同
1、sort()方法
sort()方法是列表自带的一个排序方法,可以对列表进行排序。sort()方法有两个可选参数key和reverse。其中key参数表示排序时的关键字,reverse参数表示是否进行降序排列。如果不指定这两个参数,sort()方法将按照默认规则进行升序排列。
示例代码:
lst = [3, 1, 4, 2, 5]lst.sort()print(lst)
输出结果:
[1, 2, 3, 4, 5]
2、sorted()函数
sorted()函数是一个内置的函数,可以对任何可迭代对象进行排序,比如列表、元组、字典等。sorted()函数有两个可选参数key和reverse。其中key参数表示排序时的关键字,reverse参数表示是否进行降序排列。如果不指定这两个参数,sorted()函数将按照默认规则进行升序排列。
示例代码:
lst = [3, 1, 4, 2, 5]new_lst = sorted(lst)print(new_lst)
输出结果:
[1, 2, 3, 4, 5]
三、返回值不同
sort()方法是就地排序,即对原列表进行排序,不会创建新的列表。而sorted()函数会返回一个新的列表,原列表不会受到影响。
示例代码:
lst = [3, 1, 4, 2, 5]new_lst = sorted(lst)print(new_lst)print(lst)
输出结果:
[1, 2, 3, 4, 5][3, 1, 4, 2, 5]
四、使用场景不同
sort()方法适合对列表进行排序,且不需要返回新的列表,因此适用于处理大量数据时,可以减少内存开销。而sorted()函数适用于对任何可迭代对象进行排序,且需要返回新的列表时。
五、速度不同
sort()方法的时间复杂度为O(nlogn),空间复杂度为O(1)。而sorted()函数的时间复杂度为O(nlogn),空间复杂度为O(n),因为sorted()函数需要在排序过程中创建新的列表,因此会占用更多的内存空间。因此,在处理大量数据时,如果不需要返回新的列表,使用sort()方法可能更快。
六、参数不同
sort()方法有两个可选参数:key和reverse。其中key参数是一个函数,用于指定排序时的关键字;reverse参数是一个布尔值,表示是否进行降序排列。如果不指定这两个参数,则默认按照升序排列。示例代码:
lst = [('Tom', 25), ('John', 18), ('Lucy', 30)]lst.sort(key=lambda x: x[1])print(lst)
输出结果:
[('John', 18), ('Tom', 25), ('Lucy', 30)]
sorted()函数也有两个可选参数:key和reverse。其中key参数是一个函数,用于指定排序时的关键字;reverse参数是一个布尔值,表示是否进行降序排列。如果不指定这两个参数,则默认按照升序排列。示例代码:
lst = [('Tom', 25), ('John', 18), ('Lucy', 30)]new_lst = sorted(lst, key=lambda x: x[1])print(new_lst)
输出结果:
[('John', 18), ('Tom', 25), ('Lucy', 30)]
sort()方法和sorted()函数都是Python中常用的排序方法,但它们在使用时有所不同。sort()方法适用于对列表进行排序,可以就地修改原列表,适用于处理大量数据时可以减少内存开销。而sorted()函数适用于对任何可迭代对象进行排序,且需要返回新的列表时。无论使用哪种排序方法,都可以通过指定参数进行自定义排序,以满足不同的排序需求。
延伸阅读1:python有几种排序的方法
Python是一种高级编程语言,它提供了各种数据结构和算法,其中包括许多不同的排序算法。以下是Python中几种常见的排序方法:
一、冒泡排序(Bubble Sort)
冒泡排序是最简单的排序算法之一,它的思路是不断比较相邻的两个元素,如果它们的顺序不对就交换它们。这个过程不断重复,直到所有元素都已经排好序。冒泡排序的时间复杂度为O(n^2),它适用于小规模数据的排序。
二、选择排序(Selection Sort)
选择排序的思路是找到未排序部分中的最小元素,将其放到已排序部分的末尾。这个过程不断重复,直到所有元素都已经排好序。选择排序的时间复杂度也为O(n^2),它适用于小规模数据的排序。
三、插入排序(Insertion Sort)
插入排序的思路是将未排序的元素插入到已排序的部分中,保持已排序的部分是有序的。插入排序的时间复杂度也为O(n^2),但是在实际应用中,它比冒泡排序和选择排序更快。
四、快速排序(Quick Sort)
快速排序的思路是选择一个基准元素,将比它小的元素放在左边,将比它大的元素放在右边,然后递归地对左右两边进行排序。快速排序的时间复杂度为O(nlogn),它是一种高效的排序算法,但在最坏情况下,时间复杂度为O(n^2)。
五、归并排序(Merge Sort)
归并排序的思路是将未排序的序列分成两个子序列,对每个子序列进行排序,然后将两个已排序的子序列合并成一个有序序列。归并排序的时间复杂度为O(nlogn),它是一种稳定的排序算法。
六、堆排序(Heap Sort)
堆排序的思路是将未排序的序列构建成一个最大堆或最小堆,然后不断取出堆顶元素,直到所有元素都已经排好序。堆排序的时间复杂度为O(nlogn),它是一种高效的排序算法。
上述每种算法都有其优缺点和适用场景。在编写代码时,需要根据实际情况选择合适的排序算法。

猜你喜欢LIKE
相关推荐HOT
更多>>
一个搜索框对应数据库多个字段,后台怎么对应?
一、一个搜索框对应数据库多个字段,后台对应的方法 1、使用SQL语句自定义查询条件可以在后台使用SQL语句自定义搜索的查询条件,将多个字段拼接...详情>>
2023-10-15 23:26:29
用Visual Studio连接Access数据库为什么只识别.mdb格式不识别.accdb格式?
一、用Visual Studio连接Access数据库为什么只识别.mdb格式不识别.accdb格式如果VBA或Visual studio中c#无法读取Accdb格式,可能是电脑没有安装...详情>>
2023-10-15 21:27:21
Spark SQL和Oracle、MySQL有什么区别?
一、Spark SQL和Oracle、MySQL有什么区别SQL,在这里我理解成SQL Server。三者是目前市场占有率较高(依安装量而非收入)的关系数据库,而且很...详情>>
2023-10-15 16:10:33
MySQL的自增ID用完了怎么办?
一、MySQL的自增ID用完了的解决办法1、调整自增ID的数据类型如果使用的是整数类型的自增ID,可以考虑将其修改为更大的整数类型,如将INT类型改...详情>>
2023-10-15 13:27:09热门推荐
一个搜索框对应数据库多个字段,后台怎么对应?
沸有没有什么基于postgresql的newsql?
热sql server 2017安装时出现错误怎么办?
热如何将Word中大量格式重复的文本转换成表格或者录入数据库?
新用Visual Studio连接Access数据库为什么只识别.mdb格式不识别.accdb格式?
elasticsearch也具有存储功能,为什么感觉平时看到的方案,更多是和其他数据库一起用?
hive里面的分区表和分桶表一般用于什么场景?
MySQL里面怎么给视图增加索引?
同一个服务器建立多个数据库和一个数据库上建立多个实例有什么区别?
高级子查询、嵌套子查询、相关子查询、普通子查询的区别?
synchronized锁的升级原理是什么,以及各个锁的状态对比?
epoll lt/et模式区别是什么?
为什么说MySQL Cluster是shared-nothing架构的?
安卓APP开发工具有哪些?
技术干货






