设为首页 收藏本站
查看: 684|回复: 0

[经验分享] python学习笔记(七)之集合2

[复制链接]

尚未签到

发表于 2018-8-13 07:40:36 | 显示全部楼层 |阅读模式
  python学习笔记(七)之集合2
  不变的集合
  在”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 &quot;<stdin>&quot;, line 1, in <module>
  AttributeError: 'frozenset' object has no attribute 'add'
  说明:报错说集合是不能修改的。
  对比可以修改的集合:
  实例2:
  >> c_set = set(&quot;name&quot;)
  >> c_set
  set(['a', 'e', 'm', 'n'])
  >> c_set.add(&quot;python&quot;)
  >> c_set
  set(['a', 'e', 'm', 'python', 'n'])
  集合运算
  元素与集合的关系
  只有一种关系:元素要么属于集合,要么不属于。
  实例3:
  >> c_set
  set(['a', 'e', 'm', 'python', 'n'])
  >> &quot;a&quot; in c_set
  True
  >> &quot;wtf&quot; in c_set
  False
  集合与集合的关系
  判断集合a是否等于集合b
  实例4:
  >> a = set([&quot;q&quot;,&quot;w&quot;,&quot;t&quot;,&quot;f&quot;])
  >> b = set([&quot;w&quot;,&quot;f&quot;,&quot;q&quot;,&quot;t&quot;])
  >> a == b
  True
  >> a != b
  False
  判断集合c是否是集合b的子集,或者说b是否是a的超集(超集:即a的元素也都是b的元素,但是b的元素比a的元素数量多。)
  实例5:
  >> c = set([&quot;w&quot;,&quot;t&quot;,&quot;f&quot;,&quot;g&quot;])
  >> d = set([&quot;w&quot;,&quot;t&quot;])
  >> 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([&quot;w&quot;,&quot;t&quot;,&quot;f&quot;])
  >> b = set([&quot;z&quot;,&quot;h&quot;,&quot;a&quot;,&quot;o&quot;])
  >> 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([&quot;z&quot;,&quot;h&quot;,&quot;a&quot;,&quot;o&quot;])
  >> c = set([&quot;z&quot;,&quot;y&quot;,&quot;d&quot;])
  >> 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'])

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-550887-1-1.html 上篇帖子: 初学python之字符串常见操作 下篇帖子: python 函数学习笔记一
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表