老规矩,先看help帮助信息,
sort(...)
L.sort(cmp=None, key=None, reverse=False) -- stable sort *IN PLACE*;
cmp(x, y) -> -1, 0, 1
sorted(...)
sorted(iterable, cmp=None, key=None, reverse=False) --> new sorted list
可见,这两个函数有以下区别:
- 最直白的一点区别就是sort是在原列表上修改,而sorted则是返回新的列表
- sort是list列表的方法,而sorted则是内置的方法
- 由于sorted函数是内置,且操作对象为iterable对象,这就决定sorted的使用范围比sort更广
看实际例子,
#sort函数
>>> a=[9,4,6,2,1,0]
>>> a
[9, 4, 6, 2, 1, 0]
>>> a.sort()
>>> a
[0, 1, 2, 4, 6, 9] #排序后列表发生变化
>>> a.sort(reverse=True) #反向排序
>>> a
[9, 6, 4, 2, 1, 0]
#sorted函数
>>> b=[9,4,6,2,1,0]
>>> sorted(b)
[0, 1, 2, 4, 6, 9] #排序后的输出
>>> b
[9, 4, 6, 2, 1, 0] #原列表并未改变
再看下列表元素为tupe时的操作,
>>> a=[('Kobe', 24), ('Jordan', 23), ('T-mac', 1)]
>>> a.sort()
>>> a
[('Jordan', 23), ('Kobe', 24), ('T-mac', 1)]
>>> a.sort(key=lambda x: x[1])
>>> a
[('T-mac', 1), ('Jordan', 23), ('Kobe', 24)]
>>> b=[('Kobe', 24), ('Jordan', 23), ('T-mac', 1)]
>>> b
[('Kobe', 24), ('Jordan', 23), ('T-mac', 1)]
>>> sorted(b)
[('Jordan', 23), ('Kobe', 24), ('T-mac', 1)]
>>> sorted(b, key=lambda x: x[1])
[('T-mac', 1), ('Jordan', 23), ('Kobe', 24)]
>>>
由此可知,对于tupe类元素,在排序时可以选择以哪个域作为排序关键词,这也是我们平时比较常用的功能。