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']

更多的情况是用复杂对象的某些值来对复杂对象进行排序。

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-11-25
a.sort是对a进行排序,返回None,sorted(a)返回一个排好序的副本,a不变。请多看看相关教程。本回答被网友采纳
第2个回答  2024-05-16
Python中sort()和sorted()的区别
在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)
第3个回答  2015-11-06
sort是一个值或变量等的一个树形,对自己的值进行排序。

如 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]本回答被提问者和网友采纳
第4个回答  2015-11-06
问一句,回帖有经验拿吗?
相似回答