码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2019-07-19 12:36:18      阅读:124      评论:0      收藏:0      [点我收藏+]

标签:使用方法   eve   应用   区别   副本   基础   排列   内建函数   使用   

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方法

标签:使用方法   eve   应用   区别   副本   基础   排列   内建函数   使用   

原文地址:https://www.cnblogs.com/ilyou2049/p/11208761.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!