python 排序,sort和sorted的区别是什么?
Python list内置sort()方法用来排序,也可以用python内置的全局sorted()方法来对可迭代的序列排序生成新的序列。
sorted(iterable,key=None,reverse=False),返回新的列表,对所有可迭代的对象均有效
sort(key=None,reverse=False) 就地改变列表 reverse:True反序;False 正序
Example1:
>>>sorted([1,5,3,2,9])
[1,2,3,5,9]
>>>a=[5,3,2,1,4]
>>>a.sort()
>>>a
[1,2,3,4,5] #若用list.sort()则list本身将被修改
>>>sorted({1: 'D', 2: 'B', 3: 'B', 4: 'E', 5: 'A'})
[1,2,3,4,5] #sorted()对所有的可迭代序列都有效
在python2.4开始,list.sort()和sorted()增加key参数来指定一个函数,此函数在每个元素比较前被调用。
Example2:
>>>sorted("This is a test string from Andrew".split(), key=str.lower) #加了key,忽略大小写
['a', 'Andrew', 'from', 'is', 'string', 'test', 'This'] #key=len按照长度进行排序
>>>sorted("This is a test string from Andrew".split()) #未加key,默认大写在前,小写在后
['Andrew', 'This', 'a', 'from', 'is', 'string', 'test']
更多的情况是用复杂对象的某些值来对复杂对象进行排序。
推荐于2017-11-25
2024-05-16 · 百度认证:北京一天天教育科技有限公司官方账号,教育领域创作者
在Python中,sort()和sorted()都是用于对序列如列表、元组进行排序的函数。但两者之间存在一些关键区别:
1、返回值
sort()直接对原始序列进行排序,不会返回任何值。
sorted()返回一个新序列,其中包含排序后的元素。
2、原地排序
sort()是一个原地排序函数,即它直接修改原始序列。
sorted()是一个非原地排序函数,它返回一个新序列,而不修改原始序列。
3、复杂度
sort()的时间复杂度通常为O(n log n),其中n是序列的长度。
sorted()的时间复杂度为O(n log n),并且还需要额外的空间来存储排序后的序列。
4、关键字参数
sort()不支持关键字参数。
sorted()支持关键字参数,例如key、reverse,允许根据自定义规则排序。
5、用法
sort():my_list.sort()
sorted():sorted_list=sorted(my_list)
如 a = [1,3,5,7,4,2]
a.sort()之后,再print a 就会发现a的值已经被排序了。[1,2,3,4,5,7]
sorted是一个命令,可以对任何integer排序。
如 a = [2,4,6,8,3,2,1]
sorted(a),输出的就是 [1,2,2,3,4,6,8],可以把他赋给变量b,b = sorted(a),这样b就有值了。
再如b = sorted('cdefgab'),print b输出 [a,b,c,d,e,f,g]
b = sorted('456321') , print b输出 [1,2,3,4,5,6]
2015-11-06