python:sort()和sorted()使用及对比

项目实训记录系列博客

一马当先,争做国家栋梁。

博客说明

本博客初衷是用于学校项目实训知识梳理、工作内容、收获感悟的记录。
若能在您的学习之路上有所帮助,不胜荣幸。但若需转载,也请注明出处。

博客包含以下内容(也是开篇提到的),但不意味着每一篇都会囊括所有;同时,也并非意味着博客的目录结构就是如此。每篇博客内容请看后文中具体的目录。
知识梳理:为了完成目标算法,将会广泛地查阅有关文献资料。将所学知识、资料进行整理。会加入个人理解,一起进行分享。
工作内容:作为项目参与者,在整个项目中所担任的角色、完成的任务。包括个人任务,团队沟通与合作。
收获感悟:您可以简单理解为鸡汤。不过,不同于空洞的话语,在这里所记录的感悟和总结都是结合自身实际、结合项目实际的,相信您能看到博主是怎样的人,也愿您能从中获得启发和前进的动力。

项目实训系列博客目录

1-关键词提取-任务理解&工作分配
2-关键词提取-代码运行云平台colab的使用
3-关键词提取-论文研读-RaKUn算法(1)
4-关键词提取-论文研读-RaKUn算法(2)
5-关键词提取-论文研读-betweenness centrality相关算法(1)
6-关键词提取-论文研读-betweenness centrality相关算法(2)
7-关键词提取-论文研读-load centrality的合理性探讨
8-在IDEA或Pycharm中解决编码问题
9-python:sort()和sorted()使用及对比
10-python:set的使用
11-python:most_common()函数
12-python:enumerate()函数
13-networkx的基础使用
14-收尾工作-答辩内容整理
15-收尾工作-组织协调



python中的sort()和sorted(),以及排序指定属性的方法

sort()方法

简介

sort()是python中list的函数,只有列表可以调用。调用后直接操作已经存在的list。

语法

list.sort(cmp=None, key=None, reverse=False)
参数

cmp:比较函数,默认没有。其实一般情况下确实用不到,而且python3中已经取消此参数

key:被比较的值。如果list中只有单个元素的话,如[1,3,2]就是直接比较。如果是元组的话,最好指定被比较的值以达到想要的排序效果。详见后文:排序目标

reverse:是否逆序排列,默认不是(也就是升序)。若需要逆序,需要写清是True:

reverse=True

sorted()方法

简介

可以对任何可迭代对象进行排序操作,返回的是一个新的 list。

语法

sorted(iterable, cmp=None, key=None, reverse=False)
参数

iterable : 可迭代对象。也就是需要我们操作的对象。注意set不是可迭代对象,因为set具有无序性,若使用set排序会报错。若想对set中的数据进行排序,最好先转化成list等可迭代对象。

其余参数使用同sort()。

对比

属性sort()sorted()
调用者list任何可迭代对象
返回值新的已排序list
是否操作原对象

对于list来说,如果希望直接改变原list,使用sort();如果不希望改变原list,而是返回新的list,就使用sorted()。

排序目标

前文提到,有时为了理想的排序效果(主要是list等可迭代对象中会包含数据结构,如二元元组等),需要指定排序比较的值,也就是参数key。key的指定方式有很多种,以下以包含元组为例:

lambda语法

key = lambda x:x[1]

其中,x[1]就是该元组的第二个元素(或者说,该迭代对象的第二个属性/域),以此类推。这里x是隐函数中的变量,因此规范/保险起见,不要跟外部的变量同名。

operator.itemgetter函数

首先需要导入operator模块:

import operator

然后可以用于key的指定:

key = operator.itemgetter(2)

其中,itemgetter(2)就是对迭代对象中的第三个属性进行排序。

此外,该方法还可以进行多级排序

key = operator.itemgetter(1,2)

此时就可以实现先对第二个属性排序,在此基础上再对第三个属性排序。所谓的“在此基础上”,常见的情况是第二个属性相同的情况下,再去排序第三个属性。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值