赞
踩
在当码农的生涯中,排序是一个常见的功能,需要高效而准确。而Python语言提供了内置函数sorted()和列表类型支持的List.sort()两种排序方式,两者排序效率和效果基本相同,但是适用对象和返回结果的方式不同。下面就基于Python 3.X对这两种方法进行说明。
Python里的sort排序使用的是Timsort排序算法,其最差情况下的时间复杂度是O(n log n),而且是使用C语言来实现的,所以排序性能优秀,配合其支持的参数,足以应对程序开发中的各种排序要求。
Timsort的核心思路是现实生产使用的数据在片段上是有序的,所以可以整个数据列表分割成一个个小的片段,现在小片段内使用插入排序,然后排序号的多个小片段一次进行归并排序。具体的原理详解可以参考:https://www.cnblogs.com/clement-jiao/p/9243066.html
描述
sorted() 函数对所有可迭代的对象进行排序操作。
sort 与 sorted 区别:
sort 是应用在 list 上的方法,sorted 可以对所有可迭代的对象进行排序操作。 list 的
sort 方法返回的是对已经存在的列表进行操作,而内建函数 sorted 方法返回的是一个新的 list,而不是在原来的基础上进行的操作。
sorted 语法:
sorted(iterable, key=None, reverse=False)
参数说明:
返回值
返回重新排序的列表。(请关注这一点,也就是说,原有的列表顺序不变,返回一个的新排序后的列表)
排序的方式
对于字典,默认情况下是按照键进行排序,并返回键组成的列表。如果是其他的迭代类型,则默认是按照元素进行排序。排序时,如果是字符或者字符串,按照ASCII码进行排序;如果是中文,则按照unicode编码值进行排序。
应用实例:
最简单的使用方法(无任何参数):
b = sorted([5, 2, 3, 1, 4])
print(b)
# 输出结果—-> [1, 2, 3, 4, 5]
你也可以使用 list 的 list.sort() 方法。这个方法会修改原始的 list(返回值为None)。通常这个方法不如sorted()方便-如果你不需要原始的 list,list.sort()方法效率会稍微高一些。
a=[5,2,3,1,4]
a.sort()
print(a)
# 输出结果—-> [1,2,3,4,5]
另一个区别在于list.sort() 方法只为 list 定义。而 sorted() 函数可以接收任何的 iterable,例如对字典进行排序。
print(sorted({
1: 'D', 2: 'B', 3: 'B', 4: 'E', 5: 'A'}))
# 输出结果—->[1,2,3,4,5]
利用key进行排序,比如按照绝对值进行排序。下面的例子中lambda定义了一个匿名函数,x表示从example_list中依次取出的元素,然后用abs函数对元素取绝对值,后续就会按照元素的绝对值对元素进行排序:
example_list = [5, 0,
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。