跟老齐学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 15 Python
在Python中使用dict和set方法的教程
Apr 27 Python
Django内容增加富文本功能的实例
Oct 17 Python
python实现多层感知器
Jan 18 Python
一篇文章搞定Python操作文件与目录
Aug 13 Python
python爬虫添加请求头代码实例
Dec 28 Python
pytorch 中pad函数toch.nn.functional.pad()的用法
Jan 08 Python
如何解决tensorflow恢复模型的特定值时出错
Feb 06 Python
Python3加密解密库Crypto的RSA加解密和签名/验签实现方法实例
Feb 11 Python
Python开发之pip安装及使用方法详解
Feb 21 Python
Python基于gevent实现高并发代码实例
May 15 Python
python3代码输出嵌套式对象实例详解
Dec 03 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
php 学习资料零碎东西
2010/12/04 PHP
PHP使用CURL实现对带有验证码的网站进行模拟登录的方法
2014/07/23 PHP
PHP基于数组实现的分页函数实例
2014/08/20 PHP
Ajax搜索结果页面下方的分页按钮的生成
2012/04/05 Javascript
动态添加option及createElement使用示例
2014/01/26 Javascript
JavaScript事件委托实例分析
2015/05/26 Javascript
Node.JS 循环递归复制文件夹目录及其子文件夹下的所有文件
2017/09/18 Javascript
vue中v-model动态生成的实例详解
2017/10/27 Javascript
vue2.0 和 animate.css的结合使用
2017/12/12 Javascript
浅谈angularJS2中的界面跳转方法
2018/08/31 Javascript
Vue实现类似Spring官网图片滑动效果方法
2019/03/01 Javascript
vue使用vuex实现首页导航切换不同路由的方法
2019/05/08 Javascript
js实现点赞效果
2020/03/16 Javascript
[01:04:30]Fnatic vs Mineski 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/18 DOTA
[33:28]完美世界DOTA2联赛PWL S3 PXG vs GXR 第三场 12.19
2020/12/24 DOTA
Python中字符串的常见操作技巧总结
2016/07/28 Python
python学习--使用QQ邮箱发送邮件代码实例
2019/04/16 Python
python设计tcp数据包协议类的例子
2019/07/23 Python
对python中UDP,socket的使用详解
2019/08/22 Python
python3实现弹弹球小游戏
2019/11/25 Python
python飞机大战pygame游戏框架搭建操作详解
2019/12/17 Python
使用Django和Postgres进行全文搜索的实例代码
2020/02/13 Python
Python的Django框架实现数据库查询(不返回QuerySet的方法)
2020/05/19 Python
Python文件夹批处理操作代码实例
2020/07/21 Python
基于Python爬取素材网站音频文件
2020/10/21 Python
压铸汽车模型收藏家:Diecastmodelswholesale.com
2016/12/21 全球购物
美国隐形眼镜销售网站:ContactsDirect
2017/10/28 全球购物
远程调用的原理
2014/07/05 面试题
新学期教师寄语
2014/04/02 职场文书
商业街策划方案
2014/05/31 职场文书
法定授权委托证明书
2014/09/27 职场文书
2015年世界无烟日活动总结
2015/02/10 职场文书
民事代理词范文
2015/05/25 职场文书
2015年食品安全宣传周活动总结
2015/07/09 职场文书
2017元旦、春节期间廉洁自律承诺书
2016/03/25 职场文书
PhpSpreadsheet中文文档 | Spreadsheet操作教程实例
2021/04/01 PHP