Python语言之集合2
小标 2018-11-14 来源 : 阅读 888 评论 0

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

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

不变的集合
在”python学习笔记(六)之集合1“中以set()来建立集合,这种方式所创建的集合都是可原地修改的集合,或者说是可变的,也就是说是unhashable。
还有一种集合,不能在原处修改。这种集合的创建方法是用frozenset(),ps:frozen冻结的,是不可变的,也就是说是hashable--可哈希。
实例1:

>> f_set = frozenset("wtf")
>> f_set
frozenset(['t', 'w', 'f'])
>> f_set.add("python")
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'frozenset' object has no attribute 'add'
说明:报错说集合是不能修改的。
对比可以修改的集合:
实例2:
>> c_set = set("name")
>> c_set
set(['a', 'e', 'm', 'n'])
>> c_set.add("python")
>> c_set
set(['a', 'e', 'm', 'python', 'n'])

集合运算
元素与集合的关系
只有一种关系:元素要么属于集合,要么不属于。
实例3:

>> c_set
set(['a', 'e', 'm', 'python', 'n'])
>> "a" in c_set
True
>> "wtf" in c_set
False

集合与集合的关系
判断集合a是否等于集合b
实例4:

>> a = set(["q","w","t","f"])
>> b = set(["w","f","q","t"])
>> a == b
True
>> a != b
False

判断集合c是否是集合b的子集,或者说b是否是a的超集(超集:即a的元素也都是b的元素,但是b的元素比a的元素数量多。)
实例5:

>> c = set(["w","t","f","g"])
>> d = set(["w","t"])
>> d < c   ##d是c的子集
True
>> d.issubset(c)  ##d是否是c的子集
True
>> c.issuperset(d)  ##c是否是d的超集
True

集合的并集
表达式:a | b
或者使用函数a.union(b) ps:union联盟
注意:a,b的并集得到的结果就是两个集合并集,这个结果是新生成的一个对象,不是将集合a扩充!
实例6:

>> a = set(["w","t","f"])
>> b = set(["z","h","a","o"])
>> a | b
set(['a', 't', 'w', 'f', 'h', 'z', 'o'])
>> a.union(b)
set(['a', 't', 'w', 'f', 'h', 'z', 'o'])
>> a
set(['t', 'w', 'f'])
>> b
set(['a', 'h', 'z', 'o'])

集合的交集
表达式:b & c
或者使用函数b.intersection(c) ps:intersection 路口
实例7:

>> b = set(["z","h","a","o"])
>> c = set(["z","y","d"])
>> b & c
set(['z'])
>> b.intersection(c)
set(['z'])
>> b
set(['a', 'h', 'z', 'o'])
>> c
set(['y', 'z', 'd'])

集合的补集
表达式:b - c  ##b相对于c的差(补),即b相对于c不同的元素
或者使用函数 b.difference(c)
实例8:

>> b
set(['a', 'h', 'z', 'o'])
>> c
set(['y', 'z', 'd'])
>> b - c
set(['a', 'h', 'o'])
>> c - b
set(['y', 'd'])
>> b.difference(c)
set(['a', 'h', 'o'])

本文由职坐标整理并发布,希望对同学们学习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小时内训课程