跟老齐学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创建XML文档
Mar 01 Python
Python中的True,False条件判断实例分析
Jan 12 Python
使用IPython来操作Docker容器的入门指引
Apr 08 Python
Python下载指定页面上图片的方法
May 12 Python
判断网页编码的方法python版
Aug 12 Python
Python批量提取PDF文件中文本的脚本
Mar 14 Python
Python针对给定字符串求解所有子序列是否为回文序列的方法
Apr 21 Python
对python3 中方法各种参数和返回值详解
Dec 15 Python
Python while循环使用else语句代码实例
Feb 07 Python
Python requests模块安装及使用教程图解
Jun 30 Python
浅析python 字典嵌套
Sep 29 Python
Python中OpenCV实现简单车牌字符切割
Jun 11 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
实用函数10
2007/11/08 PHP
php array_map array_multisort 高效处理多维数组排序
2009/06/11 PHP
php针对cookie操作的队列操作类实例
2014/12/10 PHP
php 升级到 5.3+ 后出现的一些错误,如 ereg(); ereg_replace(); 函数报错
2015/12/07 PHP
PHP使用第三方即时获取物流动态实例详解
2017/04/27 PHP
利用PHP计算有多少小于当前数字的数字方法示例
2020/08/26 PHP
javascript转换字符串为dom对象(字符串动态创建dom)
2010/05/10 Javascript
网页前台通过js非法字符过滤代码(骂人的话等等)
2010/05/26 Javascript
javascript实现图片切换的幻灯片效果源代码
2012/12/12 Javascript
js Select下拉列表框进行多选、移除、交换内容的具体实现方法
2013/08/13 Javascript
JavaScript实现两个Table固定表头根据页面大小自行调整
2014/01/03 Javascript
node.js中的events.emitter.once方法使用说明
2014/12/10 Javascript
JavaScript使用setInterval()函数实现简单轮询操作的方法
2015/02/02 Javascript
jQuery获取标签文本内容和html内容的方法
2015/03/27 Javascript
js仿小米官网图片轮播特效
2016/09/29 Javascript
JS扩展类,克隆对象与混合类实例分析
2016/11/26 Javascript
详谈jQuery中使用attr(), prop(), val()获取value的异同
2017/04/25 jQuery
WebStorm ES6 语法支持设置&amp;babel使用及自动编译(详解)
2017/09/08 Javascript
vue element-ui 绑定@keyup事件无效的解决方法
2018/03/09 Javascript
js根据json数据中的某一个属性来给数据分组的方法
2018/10/08 Javascript
vue-dplayer 视频播放器实例代码
2019/11/08 Javascript
解决vue刷新页面以后丢失store的数据问题
2020/08/11 Javascript
Python字符串详细介绍
2015/05/09 Python
Python实现按当前日期(年、月、日)创建多级目录的方法
2018/04/26 Python
使用numpy和PIL进行简单的图像处理方法
2018/07/02 Python
Python 切分数组实例解析
2019/11/07 Python
英国123鲜花网站:123 Flowers
2019/07/07 全球购物
英语专业大学生求职简历的自我评价
2013/10/18 职场文书
外语系大学生自荐信范文
2014/03/01 职场文书
小学生暑假家长评语
2014/04/17 职场文书
责任担保书范文
2014/05/21 职场文书
银行优秀员工推荐信
2015/03/24 职场文书
2017大学生寒假社会实践心得体会
2016/01/14 职场文书
党风廉洁教育心得体会
2016/01/20 职场文书
初中思想品德教学反思
2016/02/24 职场文书
Nginx域名转发https访问的实现
2021/03/31 Servers