项目实训记录系列博客
一马当先,争做国家栋梁。
博客说明
本博客初衷是用于学校项目实训知识梳理、工作内容、收获感悟的记录。
若能在您的学习之路上有所帮助,不胜荣幸。但若需转载,也请注明出处。
博客包含以下内容(也是开篇提到的),但不意味着每一篇都会囊括所有;同时,也并非意味着博客的目录结构就是如此。每篇博客内容请看后文中具体的目录。
知识梳理:为了完成目标算法,将会广泛地查阅有关文献资料。将所学知识、资料进行整理。会加入个人理解,一起进行分享。
工作内容:作为项目参与者,在整个项目中所担任的角色、完成的任务。包括个人任务,团队沟通与合作。
收获感悟:您可以简单理解为鸡汤。不过,不同于空洞的话语,在这里所记录的感悟和总结都是结合自身实际、结合项目实际的,相信您能看到博主是怎样的人,也愿您能从中获得启发和前进的动力。
项目实训系列博客目录
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)
此时就可以实现先对第二个属性排序,在此基础上再对第三个属性排序。所谓的“在此基础上”,常见的情况是第二个属性相同的情况下,再去排序第三个属性。