跟老齐学Python之集合的关系


Posted in Python onSeptember 24, 2014

冻结的集合

前面一节讲述了集合的基本概念,注意,那里所涉及到的集合都是可原处修改的集合。还有一种集合,不能在原处修改。这种集合的创建方法是:

>>> f_set = frozenset("qiwsir")   #看这个名字就知道了frozen,冻结的set
>>> f_set
frozenset(['q', 'i', 's', 'r', 'w'])
>>> f_set.add("python")       #报错
Traceback (most recent call last):
 File "<stdin>", line 1, in <module>
AttributeError: 'frozenset' object has no attribute 'add'

>>> a_set = set("github")      #对比看一看,这是一个可以原处修改的set
>>> a_set
set(['b', 'g', 'i', 'h', 'u', 't'])
>>> a_set.add("python")
>>> a_set
set(['b', 'g', 'i', 'h', 'python', 'u', 't'])

集合运算

先复习一下中学数学(准确说是高中数学中的一点知识)中关于集合的一点知识,主要是唤起那痛苦而青涩美丽的回忆吧,至少对我是。

元素与集合的关系

元素是否属于某个集合。

>>> aset
set(['h', 'o', 'n', 'p', 't', 'y'])
>>> "a" in aset
False
>>> "h" in aset
True

集合与集合的纠结

假设两个集合A、B

A是否等于B,即两个集合的元素完全一样
在交互模式下实验

>>> a      
set(['q', 'i', 's', 'r', 'w'])
>>> b
set(['a', 'q', 'i', 'l', 'o'])
>>> a == b
False
>>> a != b
True

A是否是B的子集,或者反过来,B是否是A的超集。即A的元素也都是B的元素,但是B的元素比A的元素数量多。
实验一下

>>> a
set(['q', 'i', 's', 'r', 'w'])
>>> c
set(['q', 'i'])
>>> c<a   #c是a的子集
True
>>> c.issubset(a)  #或者用这种方法,判断c是否是a的子集
True
>>> a.issuperset(c) #判断a是否是c的超集
True

>>> b
set(['a', 'q', 'i', 'l', 'o'])
>>> a<b   #a不是b的子集
False
>>> a.issubset(b)  #或者这样做
False

A、B的并集,即A、B所有元素,如下图所示

跟老齐学Python之集合的关系

>>> a
set(['q', 'i', 's', 'r', 'w'])
>>> b
set(['a', 'q', 'i', 'l', 'o'])
>>> a | b            #可以有两种方式,结果一样
set(['a', 'i', 'l', 'o', 'q', 's', 'r', 'w'])
>>> a.union(b)
set(['a', 'i', 'l', 'o', 'q', 's', 'r', 'w'])

A、B的交集,即A、B所公有的元素,如下图所示

跟老齐学Python之集合的关系

>>> a
set(['q', 'i', 's', 'r', 'w'])
>>> b
set(['a', 'q', 'i', 'l', 'o'])
>>> a & b    #两种方式,等价
set(['q', 'i'])
>>> a.intersection(b)
set(['q', 'i'])

我在实验的时候,顺手敲了下面的代码,出现的结果如下,看官能解释一下吗?(思考题)

>>> a and b
set(['a', 'q', 'i', 'l', 'o'])

A相对B的差(补),即A相对B不同的部分元素,如下图所示

跟老齐学Python之集合的关系

>>> a
set(['q', 'i', 's', 'r', 'w'])
>>> b
set(['a', 'q', 'i', 'l', 'o'])
>>> a - b
set(['s', 'r', 'w'])
>>> a.difference(b)
set(['s', 'r', 'w'])

-A、B的对称差集,如下图所示

跟老齐学Python之集合的关系

>>> a
set(['q', 'i', 's', 'r', 'w'])
>>> b
set(['a', 'q', 'i', 'l', 'o'])
>>> a.symmetric_difference(b)
set(['a', 'l', 'o', 's', 'r', 'w'])

以上是集合的基本运算。在编程中,如果用到,可以用前面说的方法查找。不用死记硬背。

Python 相关文章推荐
用Python制作简单的钢琴程序的教程
Apr 01 Python
django在接受post请求时显示403forbidden实例解析
Jan 25 Python
Python基于Floyd算法求解最短路径距离问题实例详解
May 16 Python
python+opencv+caffe+摄像头做目标检测的实例代码
Aug 03 Python
Python实现监控键盘鼠标操作示例【基于pyHook与pythoncom模块】
Sep 04 Python
Python3实现取图片中特定的像素替换指定的颜色示例
Jan 24 Python
Python实现的旋转数组功能算法示例
Feb 23 Python
Flask配置Cors跨域的实现
Jul 12 Python
决策树剪枝算法的python实现方法详解
Sep 18 Python
python爬虫之遍历单个域名
Nov 20 Python
python 消除 futureWarning问题的解决
Dec 25 Python
使用Python打造一款间谍程序的流程分析
Feb 21 Python
跟老齐学Python之集合(set)
Sep 24 #Python
跟老齐学Python之有点简约的元组
Sep 24 #Python
跟老齐学Python之dict()的操作方法
Sep 24 #Python
Python单链表的简单实现方法
Sep 23 #Python
Python中bisect的用法
Sep 23 #Python
python元组操作实例解析
Sep 23 #Python
Python中实现两个字典(dict)合并的方法
Sep 23 #Python
You might like
thinkPHP中volist标签用法示例
2016/12/06 PHP
浅谈PHP发送HTTP请求的几种方式
2017/07/25 PHP
php实现的三个常用加密解密功能函数示例
2017/11/06 PHP
PHP实现文件上传操作和封装
2020/03/04 PHP
Jquery 组合form元素为json格式,asp.net反序列化
2009/07/09 Javascript
jQuery快速上手:写jQuery与直接写JS的区别详细解析
2013/08/26 Javascript
使用mouse事件实现简单的鼠标经过特效
2015/01/30 Javascript
JavaScript实现的一个倒计时的类
2015/03/12 Javascript
浅谈Javascript数组的使用
2015/07/29 Javascript
BootStrap学习系列之布局组件(下拉,按钮组[toolbar],上拉)
2017/01/03 Javascript
vue-router路由参数刷新消失的问题解决方法
2017/06/17 Javascript
JS中将多个逗号替换为一个逗号的实现代码
2017/06/23 Javascript
微信小程序实现上传多个文件 超过10个
2020/03/30 Javascript
vuex刷新后数据丢失的解决方法
2020/10/18 Javascript
Python中集合类型(set)学习小结
2015/01/28 Python
12步教你理解Python装饰器
2016/02/25 Python
python使用xlrd与xlwt对excel的读写和格式设定
2017/01/21 Python
Python实现的字典值比较功能示例
2018/01/08 Python
PyQt5 pyqt多线程操作入门
2018/05/05 Python
Python装饰器的执行过程实例分析
2018/06/04 Python
python爬取Ajax动态加载网页过程解析
2019/09/05 Python
李维斯德国官方网上商店:Levi’s德国
2016/09/10 全球购物
Perry Ellis官网:美国男士品味服装
2016/12/09 全球购物
碧欧泉法国官网:Biotherm法国
2019/10/23 全球购物
市场营销专业个人自荐信格式
2013/09/21 职场文书
应聘自荐信
2013/12/14 职场文书
带薪年假请假条
2014/02/04 职场文书
抵押贷款承诺书
2014/05/30 职场文书
后勤工作个人总结
2015/02/28 职场文书
签约仪式致辞
2015/07/30 职场文书
服装店员工管理制度
2015/08/07 职场文书
2016入党积极分子党课学习心得体会
2015/10/09 职场文书
2015年教师党员个人总结
2015/11/24 职场文书
高中议论文(范文2篇)
2019/08/19 职场文书
【TED出品】天梯非主流开心游1700 划水骑士
2022/03/31 魔兽争霸
MySQL如何使备份得数据保持一致
2022/05/02 MySQL