Python中的sorted函数及其排序原理
sorted函数是Python中用于排序的内置函数,它可以对列表、元组、字典和其他可迭代对象进行排序。sorted函数的工作原理是通过比较待排序序列中的元素来确定它们之间的顺序,并返回一个新的已排好序的序列。
sorted函数有两个常用参数:iterable和key。其中,iterable参数是一个可迭代对象,表示待排序的序列;key参数是一个函数,用于指定排序时所使用的关键字。
如果只给定iterable参数,sorted函数会默认按照元素的大小进行升序排序。例如:
nums = [3, 1, 4, 1, 5, 9, 2, 6, 5] sorted_nums = sorted(nums) print(sorted_nums)
输出结果为:[1, 1, 2, 3, 4, 5, 5, 6, 9]
如果给定key参数,那么排序将会按照关键字进行。key参数需要传入一个函数,该函数会作用于待排序序列的每个元素,返回一个表示排序规则的值。例如:
words = ['banana', 'apple', 'cat', 'dog'] sorted_words = sorted(words, key=len) print(sorted_words)
输出结果为:['cat', 'dog', 'apple', 'banana']
在上面的例子中,我们给定了key参数为len函数,表示按照字符串长度进行排序。所以,最短的字符串'cat'排在最前面,最长的字符串'banana'排在最后面。
对于比较复杂的排序规则,我们可以使用lambda表达式作为key参数。例如,按照字符串的首字母进行排序:
words = ['banana', 'apple', 'cat', 'dog'] sorted_words = sorted(words, key=lambda x: x[0]) print(sorted_words)
输出结果为:['apple', 'banana', 'cat', 'dog']
在排序过程中,sorted函数会使用比较操作符(<、>、=)对待排序元素进行比较,并根据比较结果来确定元素的顺序。为了实现排序的目的,sorted函数会根据比较操作的结果对待排序序列进行交换、移动或者插入操作,最终得到一个有序的序列。
sorted函数的时间复杂度为O(nlogn),其中n表示待排序序列的长度。它可以保证稳定性,即对于两个相等的元素,在排序后它们的相对顺序不变。
总之,sorted函数是Python中用于排序的重要工具,通过给定iterable参数和可选的key参数,我们可以通过sorted函数对待排序序列进行排序,得到一个新的有序序列。
