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

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

时间: 2024-10-12 21:01:48

python中sorted方法和列表的sort方法的相关文章

python中的 list (列表)append()方法 与extend()方法的用法 和 区别

append()方法使用 首先看官方文档中的描述: list.extend(L)             Extend the list by appending all the items in the given list; equivalent to a[len(a):] = L. 翻译成汉语就是:        通过将所有元素追加到已知list来扩充它,相当于a[len(a):]= L 举个例子,更能明白这句话 >>> la [1, 2, 3] >>> lb [

python 中 sorted() 和 list.sort() 的用法

今天用python自带的sorted对一个列表进行排序, 在这里总结一下 只要是可迭代对象都可以用sorted . sorted(itrearble, cmp=None, key=None, reverse=False) =号后面是默认值 默认是升序排序的, 如果想让结果降序排列,用reverse=True 最后会将排序的结果放到一个新的列表中, 而不是对iterable本身进行修改. eg: 1, 简单排序 sorted('123456')  字符串 ['1', '2', '3', '4',

python中sorted函数的理解(对list列表排序,对dict字典排序)

在python手册中: sorted(iterable[,cmp,[,key[,reverse=True]]]) 作用:Return a new sorted list from the items in iterable. 第一个参数是一个iterable,返回值是一个对iterable中元素进行排序后的列表(list). 可选的参数有三个,cmp.key和reverse. 1)cmp指定一个定制的比较函数,这个函数接收两个参数(iterable的元素),如果第一个参数小于第二个参数,返回一个

Python中执行系统命令常见的几种方法--转载

Python中执行系统命令常见的几种方法 Python中执行系统命令常见的几种方法有: (1)os.system # 仅仅在一个子终端运行系统命令,而不能获取命令执行后的返回信息 # 如果再命令行下执行,结果直接打印出来 例如: >>> import os >>> os.system('ls') chk_err_log.py CmdTool.log  install_log.txt  install_zabbix.sh  manage_deploy.sh  MegaSA

python中列表的sort方法使用详解

一.基本形式 列表有自己的sort方法,其对列表进行原址排序,既然是原址排序,那显然元组不可能拥有这种方法,因为元组是不可修改的. 排序,数字.字符串按照ASCII,中文按照unicode从小到大排序 x = [4, 6, 2, 1, 7, 9] x.sort() print (x) # [1, 2, 4, 6, 7, 9] 如果需要一个排序好的副本,同时保持原有列表不变,怎么实现呢? x = [4, 6, 2, 1, 7, 9] y = x[:] y.sort() print(y) # [1,

Python中sorted()方法的用法

1.先说一下iterable,中文意思是迭代器. Python的帮助文档中对iterable的解释是:iteralbe指的是能够一次返回它的一个成员的对象.iterable主要包括3类: 第一类是所有的序列类型,比如list(列表).str(字符串).tuple(元组). 第二类是一些非序列类型,比如dict(字典).file(文件). 第三类是你定义的任何包含__iter__()或__getitem__()方法的类的对象. 2.Python帮助文档中对sorted方法的讲解: sorted(i

Python中给List添加元素的4种方法

https://blog.csdn.net/hanshanyeyu/article/details/78839266 List 是 Python 中常用的数据类型,它一个有序集合,即其中的元素始终保持着初始时的定义的顺序(除非你对它们进行排序或其他修改操作). 在Python中,向List添加元素,方法有如下4种方法(append(),extend(),insert(), +加号) 1. append() 追加单个元素到List的尾部,只接受一个参数,参数可以是任何数据类型,被追加的元素在Lis

python中常见的那些错误及解决方法(不定更新)

错误1:SyntaxError: 'return' outside function解决:将return放在方法体中return不能在方法以外使用 错误2:TypeError: must be str, not int类型错误 必须是一个字符串 不能是数字解决办法:使用+拼接的时候 必须使用字符串,或者将数字转化成字符串 错误3:SyntaxError: invalid syntax语法错误 非法的语法解决办法:看报错信息在第几行 ,从这一行往上找错误 错误4:IndentationError:

python中删除某个元素的3种方法

python中关于删除list中的某个元素,一般有三种方法:remove.pop.del 1.remove: 删除单个元素,删除首个符合条件的元素,按值删除举例说明: >>> str=[1,2,3,4,5,2,6] >>> str.remove(2) >>> str [1, 3, 4, 5, 2, 6] 2.pop: 删除单个或多个元素,按位删除(根据索引删除) ''' 遇到问题没人解答?小编创建了一个Python学习交流QQ群:××× 寻找有志同道合