Python中的sort函数和sorted函数有什么区别?
Python中的sort函数和sorted函数都是用来对列表进行排序的函数,但是它们有一些区别。
sort函数是列表内置函数,在原地对列表进行排序,即对原列表进行修改。sort函数没有返回值,也就是说不会产生新的列表。sort函数的语法如下:
list.sort(key=None, reverse=False)
其中,key和reverse是可选的参数。key用于指定排序的关键字,reverse用于控制升序还是降序排列。默认情况下,sort函数按照升序排列。
例如,对于以下的列表:
>>> numbers = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3]
我们可以使用sort函数来排序:
>>> numbers.sort() >>> print(numbers) [1, 1, 2, 3, 3, 4, 5, 5, 6, 9]
需要注意的是,sort函数排序是稳定的,即如果两个元素的值相等,在排序后它们的相对位置不会改变。
与之相对,sorted函数是Python内置函数,用于对可迭代对象进行排序,返回一个新的排序后的列表。sorted函数的语法如下:
sorted(iterable, key=None, reverse=False)
其中,iterable是要排序的对象,可以是列表,元组等可迭代对象。key和reverse与sort函数的参数含义相同。
例如,对于以下的列表:
>>> numbers = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3]
我们可以使用sorted函数来排序:
>>> new_numbers = sorted(numbers) >>> print(new_numbers) [1, 1, 2, 3, 3, 4, 5, 5, 6, 9]
需要注意的是,sorted函数不会对原列表进行修改,而是返回一个新的排序后的列表。与sort函数不同,sorted函数返回的是一个新的列表,因此sorted排序是非稳定的,即如果两个元素的值相等,它们的相对位置可能会改变。
另外,sorted函数还可以接受一个名为“key”的可调用对象,用来指定排序算法的规则。例如,我们可以使用以下的key函数来对列表中的元素按照绝对值排序:
>>> numbers = [-5, -2, -1, 0, 3, 4, 1, -8] >>> new_numbers = sorted(numbers, key=abs) >>> print(new_numbers) [0, -1, 1, -2, 3, 4, -5, -8]
在上面的例子中,key函数是Python内置函数abs,表示按照元素绝对值大小排序。
综上所述,sort函数与sorted函数的主要区别如下:
1. sort函数是列表的内置方法,而sorted函数是Python的内置函数;
2. sort函数对原列表进行排序,没有返回值;sorted函数返回一个新的排序后的列表;
3. sort函数排序是稳定的,sorted函数排序是非稳定的;
4. sort函数不能指定排序的对象,而sorted函数可以对任何可迭代对象进行排序。
