集合常用方法小结
本文作者:李钊颖
文字编辑:宁刘莹
技术总编:张 邯
重磅!!!为了大家能够更好地学习Python技术,以及应广大粉丝和往期学员的要求,2019年11月29日-12月1日,武汉字符串数据科技有限公司将在湖北武汉举办《第四期Python编程技术培训》。本次培训采用理论与案例相结合的方式,旨在帮助零基础学员轻松入门Python,由浅入深学习和掌握Python的编程技术,特别是网络数据抓取技术。目前正在火热招生中~
详细培训大纲及报名方式,请点击《2019年Python第四期培训招生》或点击文末阅读原文呦~Python中的集合数据类型指的是一系列值(元素)组成的一个集合,可进行关系测试、删除重复数据,以及计算数学运算,如交集、并集、差异和对称差异。在之前的推文中我们已经介绍过集合的定义和特点(《数据类型——Dict、Set与Frozenset简析》),在今天的推文中我们详细地介绍下集合的常用方法。
1.集合的赋值
In [1]: fruit = {'apple', 'banana', 'orange'}
In [2]: fruit.add('pear')
In [3]: fruit
Out[3]: {'apple', 'banana', 'orange', 'pear'} #集合fruit中的增加了元素pear
(2) S.update(S1)表示将S1更新到集合S中,更新后集合S中包括两者剔除重复后的所有元素,S1参数可以是列表、元组、字典等。S.update(S1)可以只增加一个,也可以增加多个值。
In [4]: color = {'red','yellow','orange'}
In [5]: fruit.update(color) #将color中的元素增加到fruit中
In [6]: fruit
Out[6]: {'apple', 'banana', 'orange', 'pear', 'red', 'yellow'}
In [7]: color
Out[7]: {'orange', 'red', 'yellow'} #集合color中的元素不变
In [8]: color.update('爬虫')
In [9]: color
Out[9]: {'orange', 'red', 'yellow', '爬', '虫'}
In[10]: color.update({"爬虫"})
Out[10]: {'yellow', '爬虫', 'red', 'orange'}
(3) S1=S.copy()表示把集合S的内容复制给集合S1。
In [11]: fruit = {'apple', 'banana', 'orange'}
In [12]: a=fruit.copy()
In [13]: a
Out[13]: {'apple', 'banana', 'orange'} #集合a和集合fruit内容一样。
以上三种方法都可以对集合的元素值进行更新。
2.删除集合中的元素
(1) S.discard(X)表示移除集合S中的X元素,如果集合S中没有X元素,则什么也不做,也不会报错。
In [14]: fruit.discard('yellow')
In [15]: fruit
Out[15]:{'apple', 'banana', 'orange', 'pear', 'red'} #集合fruit中的元素orange被移除掉了
(2) S.pop()表示从集合中选择任意一个元素删除,并返回删除值。
In [16]: fruit.pop()
Out[16]: 'pear' #集合fruit中的元素pear被返回回来
In [17]: fruit
Out[17]: {'apple', 'banana', 'orange', 'red'} #pear元素从fruit中删除了
如果要指定删除元素,则会报错。因为pop()函数不能指定参数。
In [18]: fruit.pop('red')
TypeError Traceback (most recent call last)
<ipython-input-12-dc413c4ebc5b> in <module>
----> 1 fruit.pop('red')
TypeError: pop() takes no arguments (1 given)
(3) S.remove(X)表示移除集合S中的X元素,但删除的元素必须是集合中的元素,否则就会报错。
In [19]: fruit.remove('red')
In [20]: fruit
Out[20]: {'banana', 'orange', 'yellow'} #指定的元素red被删除掉了
In [21]: fruit.remove('爬虫俱乐部') #指定一个不在集合中的元素
---------------------------------------------------------------------------
KeyError Traceback (most recent call last)
<ipython-input-10-4df394dfd672> in <module>
----> 1 fruit.remove('爬虫俱乐部')
KeyError: '爬虫俱乐部'
(4) S.clear()表示移除集合S中的所有元素,注意这里是全部删除,不能指定删除元素。
In [22]: fruit.clear()
In [23]: fruit
Out[23]: set() # 返回一个空的集合
3.集合的运算
首先,我们重新定义集合fruit和color。
In [24]: fruit = {'apple', 'banana', 'orange'}
In [25]: color = {'red','yellow','orange'}
(1) 交集运算,得出两个集合的相同元素。其语法结构为S.intersection(S1),等价于“S & S1”,此时返回两个集合中的共同元素,原来的集合不变。
In [26]: fruit.intersection(color)
Out[26]: {'orange'}
S.intersection_update(S1),返回集合S和集合S1的共同元素,并更新S。等同于“S= S & S1”,此时返回的共同元素会赋值给S。
In [27]: fruit.intersection_update(color)
In [28]: fruit
Out[28]: {'orange'} #集合fruit更新后只包含两个集合的共有元素
(2) 并集运算,将两个集合的元素剔除重复之后拼接起来。其语法结构为S.union(S1),等价于“S| S1”。
In [29]: fruit.union(color)
Out[29]: {'apple', 'banana', 'orange', 'red', 'yellow'} #两个集合的非重复元素拼接
(3) 差集运算,将被减集合中两者共有的元素去掉。其语法结构为S.difference(S1),等价于“S- S1”,结果是去掉元素的被减集合。
In [30]: fruit.difference(color)
Out[30]: {'apple', 'banana'} #即包含fruit中但不包含color中的元素组成的集合
In [31]: color.difference(fruit)
Out[31]: {'red', 'yellow'} #即包含color中但不包含fruit中的元素组成的集合
S.difference_update(S1),返回删除了集合S1中也含有的元素后的集合S。等同于“S= S – S1”:
In [32]: fruit.difference_update(color)
In [33]: fruit
Out[33]: {'apple', 'banana'} #返回去掉两者重复元素后的集合fruit
(4) 取对称差集,过滤掉共有元素,输出两个集合中的不同元素。其语法结构为S.symmetric_difference(S1),等价于“S ^ S1”,取S 、S1中的不同元素。
In [34]: fruit.symmetric_difference(color)
Out[34]: {'apple', 'banana', 'red', 'yellow'} #删除重复元素,只留下不同元素
S.symmetric_difference_update(S1),表示将剔除两个集合的重复元素,并将剔除之后的集合S1更新到集合S中。
In [35]: fruit.symmetric_difference_update(color)
In [36]: fruit
Out[36]: {'apple', 'banana', 'red', 'yellow'} #集合fruit包含两个集合的所有不同元素
4.判断集合关系
In [37]: fruit.isdisjoint(color)
Out[37]: False # fruit与color有相同元素,返回False
(2) A.issubset(B)判断两个集合是否是子集关系(A⊆B)。即判断集合A中的所有元素是否都包含在集合B中,若都包含在集合B中则返回True,否则返回False.
In [38]: fruit.issubset(color)
Out[38]: False #集合fruit中的元素并没有全部包含在集合color中,返回False
(3) A.issuperset(B)判断集合B中的所有元素是否都包含在集合A中,若都包含在集合A中则返回True,否则返回False
In [39]: color = {'orange'}
In [40]: fruit.issuperset(color)
Out[40]: True #集合color中的所有元素都包含在集合fruit中,返回True
至此,集合的定义、特点以及常用方法就介绍完了,相信大家对集合也有了更深的理解。想要获得第一手Stata和Python的学习资讯,请持续关注爬虫俱乐部的微信公众号!
关于我们
微信公众号“Stata and Python数据分析”分享实用的stata、python等软件的数据处理知识,欢迎转载、打赏。我们是由李春涛教授领导下的研究生及本科生组成的大数据处理和分析团队。
1)必须原创,禁止抄袭;
2)必须准确,详细,有例子,有截图;
注意事项:
1)所有投稿都会经过本公众号运营团队成员的审核,审核通过才可录用,一经录用,会在该推文里为作者署名,并有赏金分成。
2)邮件请注明投稿,邮件名称为“投稿+推文名称”。
3)应广大读者要求,现开通有偿问答服务,如果大家遇到有关数据处理、分析等问题,可以在公众号中提出,只需支付少量赏金,我们会在后期的推文里给予解答。