Python语言 set(集合)
小标 2018-12-10 来源 : 阅读 1263 评论 0

摘要:本文主要向大家介绍了Python语言 set(集合),通过具体的内容向大家展示,希望对大家学习Python语言有所帮助。

本文主要向大家介绍了Python语言 set(集合),通过具体的内容向大家展示,希望对大家学习Python语言有所帮助。

set和dict类似,也是一组key的集合,但不存储value。由于key不能重复,所以,在set中,没有重复的key。

集合是一个无序的,不重复的数据组合,它的主要作用如下:

去重,把一个列表变成集合,就自动去重了

关系测试,测试两组数据之前的交集、差集、并集等关系

集合(set):把不同的元素组成一起形成集合,是python基本的数据类型。

集合元素(set elements):组成集合的成员(不可重复)

>>> li=[1,2,'a','b'] 

>>> s =set(li)

>>> print(s)             # {1, 2, 'a', 'b'}

>>> li2=[1,2,1,'a','a']

>>> s=set(li2)

>>> print(s)             #{1, 2, 'a'}      重复元素在set中自动被过滤:

 #注意,传入的参数[1, 2, 3]是一个list,而显示的{1, 2, 3}只是告诉你这个set内部有1,2,3这3个元素,

 显示的顺序也不表示set是有序的。。

集合的相关操作  

1、创建集合

由于集合没有自己的语法格式,只能通过集合的工厂方法set()和frozenset()创建

>>> s1 = set('alvin')

>>> s2= frozenset('yuan')

>>> print(s1,type(s1))               #{'l', 'v', 'i', 'a', 'n'} <class 'set'>

>>> print(s2,type(s2))               #frozenset({'n', 'y', 'a', 'u'}) <class 'frozenset'>

2、访问集合

由于集合本身是无序的,所以不能为集合创建索引或切片操作,只能循环遍历或使用in、not in来访问或判断集合元素。

>>> s1 = set('alvin')

>>> print('a' in s1)     #True

>>> print('b' in s1)     #False

>>> #s1[1]  #TypeError: 'set' object does not support indexing

>>> for i in s1:

>>>     print(i)        #l     i    n   v    a

3、更新集合

可使用以下内建方法来更新:

s.add()

s.update()

注意只有可变集合才能更新:

>>> #s1 = frozenset('alvin')

>>> #print(s1)           #frozenset({'a', 'n', 'i', 'v', 'l'})

>>> #s1.add("ccdc")      #AttributeError: 'frozenset' object has no attribute 'add'

>>> s2 = set('alvin')

>>> s2.add('mm')

>>> print(s2)  # {'mm', 'l', 'n', 'a', 'i', 'v'}

>>> s2.update('HO')  # 添加多个元素

>>> print(s2)  # {'mm', 'l', 'n', 'a', 'i', 'H', 'O', 'v'}

4、删除集合

s.remove()

>>> s2 = set('alvin')

>>> >>> print(s2)  # { 'l', 'n', 'a', 'i', 'v'}

>>> s2.remove('l')

>>> print(s2)  # {'n', 'a', 'i',  'v'}

>>> del s2   #删除集合本身 

>>> print(s2)    #NameError: name 's2' is not defined

四、集合类型操作符 

1   in ,not in

2   集合等价与不等价(==, !=)

3   子集、超集

s=set('alvinyuan')

s1=set('alvin')

print('v' in s)

print(s1<s)

4   联合(|)

联合(union)操作与集合的or操作其实等价的,联合符号有个等价的方法,union()。

s1=set('alvin')

s2=set('yuan')

s3=s1|s2

print(s3)  #{'a', 'l', 'i', 'n', 'y', 'v', 'u'}

print(s1.union(s2)) #{'a', 'l', 'i', 'n', 'y', 'v', 'u'} 

5、交集(&)

与集合and等价,交集符号的等价方法是intersection()

s1=set('alvin')

s2=set('yuan')

s3=s1&s2

print(s3)  #{'n', 'a'}

print(s1.intersection(s2)) #{'n', 'a'}

6、查集(-)

等价方法是difference()

s1=set('alvin')

s2=set('yuan')

s3=s1-s2

print(s3)  #{'v', 'i', 'l'}

print(s1.difference(s2)) #{'v', 'i', 'l'} 

7、对称差集(^)

对称差分是集合的XOR(‘异或’),取得的元素属于s1,s2但不同时属于s1和s2.其等价方法symmetric_difference()

s1=set('alvin')

s2=set('yuan')

s3=s1^s2

print(s3)  #{'l', 'v', 'y', 'u', 'i'}

print(s1.symmetric_difference(s2)) #{'l', 'v', 'y', 'u', 'i'}

应用

'''最简单的去重方式'''

lis = [1,2,3,4,1,2,3,4]

print list(set(lis))    #[1, 2, 3, 4]

本文由职坐标整理并发布,希望对同学们学习Python有所帮助,更多内容请关注职坐标编程语言Python频道!

本文由 @小标 发布于职坐标。未经许可,禁止转载。
喜欢 | 1 不喜欢 | 0
看完这篇文章有何感觉?已经有1人表态,100%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程