python中sorted方法和列表的sort方法

Posted ilyou2049

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python中sorted方法和列表的sort方法相关的知识,希望对你有一定的参考价值。

sort 与 sorted 区别:

  1. sort 是应用在 list 上的方法,属于列表的成员方法,sorted 可以对所有可迭代的对象进行排序操作。
  2. list 的 sort 方法返回的是对已经存在的列表进行操作,而内建函数 sorted 方法返回的是一个新的 list,而不是在原来的基础上进行的操作。
  3. sort使用方法为ls.sort(),而sorted使用方法为sorted(ls)

一、基本形式

列表有自己的sort方法,其对列表进行原址排序,既然是原址排序,那显然元组不可能拥有这种方法,因为元组是不可修改的。

排序,数字、字符串按照ASCII,中文按照unicode从小到大排序。

>>>List1 = [3, 2, 4, 5, 1, 9]
>>>List1.sort()
>>>List1
[1, 2, 3, 4, 5, 9]

如果需要一个排序好的副本,代码如下: 

>>>List1 = [3, 2, 4, 5, 1, 9]
>>>List2 = List1[:]
>>>List2.sort()
>>>List2
[1, 2, 3, 4, 5, 9]
>>>List1
[3, 2, 4, 5, 1, 9]

另一种获取已排序的列表副本的方法是使用sorted函数:

>>>List1 = [3, 2, 4, 5, 1, 9]
>>>List2 = sorted(List1)   #sorted返回一个有序的副本,并且类型总是列表
>>>List2
[1, 2, 3, 4, 5, 9]
>>>List1
[3, 2, 4, 5, 1, 9]

二、可选参数

sort方法还有两个可选参数:key和reverse

1、key在使用时必须提供一个排序过程中调用的函数:

>>>List1 = [1, 333, 22, 55555, 4444]
>>>List1.sort(key=len)
>>>List1
[1, 22, 333, 4444, 55555]

2、reverse实现逆序排序,需要提供一个布尔值:

>>>List1 = [3, 23, 1, 0, 8]
>>>List1.sort(reverse=True)
>>>List1
[23, 8, 3, 1, 0]

True为倒序排列,False为正序排列

 三、例子

例:

列表按照其中每一个值的绝对值排序。
>>>List1 = [123, 89, -32, 0, 321, -36, 33]
>>>List2 = sorted(List1, key=abs)
>>>List2
[0, -32, 33, -36, 89, 123, 321]
>>>List1
[123, 89, -32, 0, 321, -36, 33]

对复杂的元组排序

>>>student_tuples = [
    (john, A, 15), 
    (jane, B, 12), 
    (tom, A, 11),
    (Jack, B, 13)
]
>>>result = sorted(student_tuples, key=lambda student: student[2])
>>>result
[(tom, A, 11), (jane, B, 12), (Jack, B, 13), (john, A, 15)]

根据字典的value排序

默认sorted是对dict的key排序的,如果要根据dict的value排序就需要指定key参数了。

>>>dict_my = a: 2, c: 5, b: 1, ab: 6, e: 2
>>>dict_my
a: 2, ab: 6, b: 1, c: 5, e: 2
>>>result = sorted(dict_my)
>>>result
[a, ab, b, c, e]
>>>dict_my[c]
5
>>>result2 = sorted(dict_my, key=lambda x : dict_my[x], reverse=True)
>>>result2
[ab, c, a, e, b]

 

 

 

 

 

 

以上是关于python中sorted方法和列表的sort方法的主要内容,如果未能解决你的问题,请参考以下文章

Python中对列表进行排序的方法都有哪些呢?

Python 使用列表的sort()进行多级排序实例演示,list的sort()排序方法使用详解,python3中sort()的cmp自定义排序方法,sort()的逆序倒叙排序方法

python的sort和sorted

Python面试必考重点之列表,元组和字典第九关——列表排序的方法/列表的sort方法和sorted函数的区别/倒序排列一个列表

Python入门教程第30篇 列表sort()方法

Python入门教程第30篇 列表sort()方法