python sort和sorted函数

老规矩,先看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

可见,这两个函数有以下区别:

  1. 最直白的一点区别就是sort是在原列表上修改,而sorted则是返回新的列表
  2. sort是list列表的方法,而sorted则是内置的方法
  3. 由于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类元素,在排序时可以选择以哪个域作为排序关键词,这也是我们平时比较常用的功能。

猜你喜欢

转载自blog.csdn.net/u010039418/article/details/81195955