导航:首页 > 编程语言 > pythonsorted和sort

pythonsorted和sort

发布时间:2025-07-02 16:45:50

python 列表排序sort和sorted使用

Python的列表排序提供了sort和sorted两种方法,它们的主要区别和使用方式如下

总结: 若需要直接修改原列表,并不关心返回值,可以选择sort方法。 若需要保持原列表不变,并获取一个新的排序后的列表,可以选择sorted方法。 两者都支持通过key和reverse参数来自定义排序规则。

⑵ 你真的明白了Python中sort()和sorted()的区别了吗

1、sort 与 sorted 区别

① sort 是应用在 list 上的方法,属于列表的成员方法,sorted 可以对所有可迭代的对象进行排序操作。

② list 的 sort 方法返回的是对已经存在的列表进行操作,而内建函数 sorted 方法返回的是一个新的 list,而不是在原来的基础上进行的操作。

③ sort使用方法为ls.sort(),而sorted使用方法为sorted(ls)。

通过代码,简单解释sort()与sorted()的区别:

在开始使用Python进行排序之前,首先需要了解如何对数值和字符串数据进行排序,包括列表、元组以及集合有一个基础的理解。因为下文的讲解中会用到这些数据结构,并进行一些基础的操作。

2、sort()的理解使用

sort() 函数用于对原列表进行排序,如果指定参数,则使用比较函数指定的比较函数。

语法如下:

参数:

cmp – 可选参数,如果指定了该参数会使用该参数的方法进行排序。

key – 主要是用来进行比较的元素,只有一个参数,具体的函数的参数就是取自于可迭代对象中,指定可迭代对象中的一个元素来进行排序。

reverse – 排序规则,reverse = True 降序, reverse = False 升序(默认)。

返回值:

该函数没有返回值,但会对数组/列表进行排序;

示例:

需要注意的地方:

① cmp作为sort()参数使用(python2中使用,python3已弃用)

② python3中也取消了函数传入机制,可以构造排序函数递给key实现。

示例:

或者自定义函数传入:

算法中的应用:

例:把数组排成最小的数

输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。

3、sorted()的理解使用

sorted() 函数对所有可迭代的对象进行排序操作

语法如下:

参数说明:

iterable – 可迭代对象。

cmp – 比较的函数,这个具有两个参数,参数的值都是从可迭代对象中取出,此函数必须遵守的规则为,大于则返回1,小于则返回-1,等于则返回0。(一般省略)

key – 主要是用来进行比较的元素,只有一个参数,具体的函数的参数就是取自于可迭代对象中,指定可迭代对象中的一个元素来进行排序。

常用的用来作为参数key的函数有 lambda函数和operator.itemgetter() 尤其是列表元素为多维数据时,需要key来选取按哪一位数据来进行排序

reverse – 排序规则,reverse = True 降序 , reverse = False 升序(默认)。

返回值

返回重新排序的列表;

需要注意:列表的元素可以是多样的,返回列表的形式与输入列表的形式一致。

元组和集合同样可以使用sorted()函数!

值得注意的是: 即使输入的是一个集合和元组,输出结果仍然是一个列表,因为sorted()函数根据定义会返回一个新列表,如果返回的对象需要匹配输入类型,则可以将其转化为新类型。 如果试图将结果列表转换回集合类型,请注意,按照定义而言,集合是无序的。

Python数据类型模块列表、元祖、集合、字典的基础使用还不太牢固的新手可利用下方的直播课复习巩固↓↓

1)一般用法

当元素为一维数字或字母时,结果返回一个新的列表,其中元素按升序或降序排列(根据reverse参数来决定)。

2)各类使用举例

例1:正序排序

例2:逆序排序

例3:根据字符长短进行排序

例4:和lambda()函数配合使用

例5:对列表中的元素进行排序,key比较

例6:sorted() 用于字典dictionary

字典排序

① 返回的是排序后的key

② 对字典进行排序,需将字典通过items()转换为元组列表

③ sorted()函数默认对字典的key值进行排序

输出:[(‘hu’, 2), (‘li’, 2), (‘pan’, 7), (‘wang’, 4), (‘zhang’, 4)]

输出:[(‘zhang’, 4), (‘wang’, 4), (‘pan’, 7), (‘li’, 2), (‘hu’, 2)]

④ 如果想要对字典的value值进行排序,可以设置key参数

输出:[(‘pan’, 7), (‘zhang’, 4), (‘wang’, 4), (‘li’, 2), (‘hu’, 2)]

⑤ 嵌套排序

先对字典的value值进行降序排序,value值相同,对相同value值的key值进行降序排序。

输出:[(‘pan’, 7), (‘zhang’, 4), (‘wang’, 4), (‘li’, 2), (‘hu’, 2)]

3)sorted()函数四种重要的特性

1)sorted()函数不需要定义,它是一个内置函数,可以在标准的Python安装中使用。

2)在没有额外的参数的情况下,sorted()函数按照升序对值进行排列,也就是按照从小到大的顺序。

3)原始的numbers不会改变,因为sorted()函数提供了一个新的有序的输出结果,并且不改变原始值的顺序。

4)当sorted()函数被调用时,它会提供一个有序的列表作为返回值。

最后一点意味着列表可以使用sorted()函数,并且输出结果可以立刻赋值给一个变量。

4、sort()和sorted()高级排序技巧(key的使用)

1)排序基础

简单的升序排序只需要调用sorted()方法,它返回一个新的list,新的list的元素基于小于运算符(lt)来排序。

也可以使用list.sort()方法来排序,此时list本身将被修改,通常这种方法不如sorted()方便,但如果你不需要保留原来的list,这种方法更有效。

另一个不同就是list.sort()方法仅被定义在list中,相反地sorted()方法对所有的可迭代序列都有效。

2)key参数/函数

例如通过key指定的函数来忽略字符串的大小写:

key参数的值为一个函数,此函数只有一个参数且返回一个值用来进行比较。

更广泛的使用情况是用复杂对象的某些值来对复杂对象的序列排序,例如

同样的技术对拥有命名属性的复杂对象也适用

3)Operator 模块函数

operator模块有itemgetter,attrgetter,从2.6开始还增加了methodcaller方法。

4)升序和降序

list.sort()和sorted()都接受一个参数reverse(True or False)来表示升序或降序排序。

例如对上面的student降序排序

5)排序的稳定性和复杂排序

多个元素如果有相同的key,则排序前后他们的先后顺序不变。

注意在排序后’blue’的顺序被保持了,即’blue’, 1在’blue’, 2的前面。

更复杂的你可以构建多个步骤来进行更复杂的排序,例如对student数据先以grade降序排列,然后再以age升序排列。

阅读全文

与pythonsorted和sort相关的资料

热点内容
有ip地址但是dhcp服务器 浏览:443
三星手机加密中断怎么回事 浏览:535
训练模型init源码 浏览:837
程序编译是谁的功能 浏览:502
qq收藏怎样设置加密 浏览:288
服务器的视频怎么保存 浏览:346
下载暗黑2压缩包解压后无法启动 浏览:743
安卓手机删除了的照片怎么找回来 浏览:347
安卓文件夹显示多图 浏览:884
文件夹内变目录 浏览:859
欧盟程序员培训 浏览:183
linux登录ftp命令 浏览:741
群晖如何给一个用户建个文件夹 浏览:248
手机版我的世界空岛战争服务器地址 浏览:556
m4a如何上传到钉钉群文件夹 浏览:605
为什么安卓app更新比苹果快 浏览:960
松下gr7软件怎么编译程序 浏览:473
压缩空气能不能呼吸用 浏览:478
java调用远程接口 浏览:854
java红色的叹号 浏览:378