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
更多>>
mysql怎么查看连接池是否已满?
一、mysql怎么查看连接池是否已满1.查看连接数配置(MySQL服务器允许的最大连接数16384)show variables like ‘%max_connections%’2.查看当前...详情>>
2023-10-17 21:20:19
什么是职场情商,如何提高?
什么是情商?情商是一个 20 世纪 90 年代作为学术话题出现的概念,并迅速成为商业心理学和职场动态研究的重要组成部分。它通常被称为 EQ(情商...详情>>
2023-10-17 20:16:30
vector, list, map等容器使用场合是什么?
一、vector, list, map等容器使用场合vector适用于对象简单,变化较小,并且频繁随机访问的场景。list适用经常进行插入和删除并且不经常随机访...详情>>
2023-10-17 19:45:03
数据挖掘中涉及的关联规则在实际生活中的应用有哪些?
一、数据挖掘中涉及的关联规则在实际生活中的应用关于关联规则分析,这篇文章可以认真学习一下,讲的比较全面,关联规则分析还在零售、快消、电...详情>>
2023-10-17 18:40:06热门推荐
sql server2012r2所在服务器做端口限制,需要开放什么端口才能继续访问数据库?
沸Oracle有什么优势和劣势?
热数据库聚集索引非聚集索引实现上有哪些区别?
热数据库(如oracle、mysql)及编程语言(php、python、perl、lisp)的区别?
新CSS 隐藏页面元素有哪些方法?
除了cx_Oracle,python还可以通过什么方式访问Oracle数据库?
SQL开启事务处理的语句 START TRANSACTION 和BEGIN TRAN的区别?
Android适配你需要学习哪些?
开发web应用,好的开发流程是怎么样的?
为什么说Gradle是Android进阶绕不去的坎?
mysql怎么查看连接池是否已满?
WHERE中有很多IN判断怎么提速?
软件开发要遵循哪些事项?
有了innodb buffer pool为什么要有redis?
技术干货






