python中set的使用

项目实训记录系列博客

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

博客说明

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

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

项目实训系列博客目录

1-关键词提取-任务理解&工作分配
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中的set使用

简介

set是python的基本数据结构之一。作为集合,拥有着数学定义上集合的特性,主要是无序性不可重复性

作为基本的数据结构之一,set支持很多操作,网上已经有很多细致入微的教程,在此不总结赘述,只是提一些个人用到的、需要注意的点。

详细方法请前往菜鸟教程查看:https://www.runoob.com/python3/python3-set.html#setmethod

特性

无序性

无序性,最直观的影响是:意味着对set无法进行sort()或是sorted()操作。(关于这两种方法的使用明细,请前往我的另一篇博客:

如若使用将会报错,提示你set并非是可迭代的对象。这是由set的无序性所决定的,set无法进行sort等跟“顺序“有关的操作,就是因为这个原因。

除了排序,还有通过索引的相关做法:set[i]取值,或是set[0:4]切片,也是不可以的。

实际上,多数情况下我们所需要的都是有序的数据结构。在其他语言,如java,C++中的“数组”概念,就是经典的有序结构,在python中,所谓的“数组”一般指list。对于list就可以排序、通过索引取值、切片操作。可以说,set的无序性,让这种数据结构“受到冷落”。

当然,这种特性是双刃剑,有缺点,自然也有优势。无序性意味着在顺序会影响结果的情况下,可以使用set来避免考虑顺序性。

不可重复性

集合中的元素不可重复。对于这一个老生常谈的特点,有什么应用呢?

最直观的应用:去重。将一个list转化为set后,就可以做到去掉重复元素:

# a is a list, now we'll transform it to set
a = set(a)

但是,这样做也有“后患”:set跟list的性质不同,前文提到的“无序性”可能会影响操作。因此,如果需要对去重之后的数据结构(也就是set)进行排序等需要顺序性的操作,最好是重新转化回来:

# Well, well, I know you wanna a list, right?
a = list(a)

这样就可以只通过python自带的方法可以快速实现去重。

操作

set作为数学意义上的概念,其操作也跟list等对象不同。除了对于数据结构而言常见的添加、删除等操作,set还拥有着自己特殊的操作:交集、并集等。在这里以交集为例进行介绍。

intersection()

简介

intersection() 方法用于返回两个或更多集合中都包含的元素,即交集。

语法
set.intersection(set1, set2, ..., setn)
参数

set1:必填。至少需要一个集合来跟调用此方法的集合进行交集操作。换言之,至少需要两个集合才能取交集。

set2及之后的集合:选填。若有的话就会同时考虑这些集合。

返回值

结果集,是一个新的集合。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值