跟老齐学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中对list去重的多种方法
Sep 18 Python
python if not in 多条件判断代码
Sep 21 Python
windows系统下Python环境搭建教程
Mar 28 Python
Python中用psycopg2模块操作PostgreSQL方法
Nov 28 Python
Python对列表去重的多种方法(四种方法)
Dec 05 Python
Python测试人员需要掌握的知识
Feb 08 Python
pyqt5 实现在别的窗口弹出进度条
Jun 18 Python
Python实现Mysql数据统计及numpy统计函数
Jul 15 Python
对Pytorch中Tensor的各种池化操作解析
Jan 03 Python
python opencv圆、椭圆与任意多边形的绘制实例详解
Feb 06 Python
Python实现疫情通定时自动填写功能(附代码)
May 27 Python
Django缓存Cache使用详解
Nov 30 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
论坛头像随机变换代码
2006/10/09 PHP
php实现的仿阿里巴巴实现同类产品翻页
2009/12/11 PHP
PHP实现求两个字符串最长公共子串的方法示例
2017/11/17 PHP
详解提高使用Java反射的效率方法
2019/04/29 PHP
一段实现页面上的图片延时加载的js代码
2010/02/11 Javascript
为原生js Array增加each方法
2012/04/07 Javascript
JS获取当前日期时间并定时刷新示例
2021/03/04 Javascript
javascript中传统事件与现代事件
2015/06/23 Javascript
javascript实现表单验证
2016/01/29 Javascript
JavaScript鼠标特效大全
2016/09/13 Javascript
玩转NODE.JS(四)-搭建简单的聊天室的代码
2016/11/11 Javascript
微信小程序登录态控制深入分析
2017/04/12 Javascript
mui开发中获取单选按钮、复选框的值(实例讲解)
2017/07/24 Javascript
react-native-fs实现文件下载、文本存储的示例代码
2017/09/22 Javascript
Vue中的情侣属性$dispatch和$broadcast详解
2019/03/07 Javascript
详解基于React.js和Node.js的SSR实现方案
2019/03/21 Javascript
微信小程序版本自动更新的方法
2019/06/14 Javascript
js数据类型转换与流程控制操作实例分析
2019/12/18 Javascript
python正则分组的应用
2013/11/10 Python
Python脚本实现格式化css文件
2015/04/08 Python
Python爬虫中urllib库的进阶学习
2018/01/05 Python
Python爬虫常用小技巧之设置代理IP
2018/09/13 Python
python3+requests接口自动化session操作方法
2018/10/13 Python
python opencv读mp4视频的实例
2018/12/07 Python
详解PANDAS 数据合并与重塑(join/merge篇)
2019/07/09 Python
Python脚本实现Zabbix多行日志监控过程解析
2020/08/26 Python
大都会艺术博物馆商店:The Met Store
2018/06/22 全球购物
巴西购物网站:Onofre Agora
2020/06/08 全球购物
RealTek面试题
2016/06/28 面试题
酒店保洁主管岗位职责
2013/11/28 职场文书
《我为你骄傲》教学反思
2014/02/20 职场文书
二手房买卖协议书
2014/04/10 职场文书
高三霸气励志标语
2014/06/24 职场文书
党员反对四风问题思想汇报
2014/09/12 职场文书
家电创业计划书
2019/08/05 职场文书
《废话连篇——致新手》——chinapizza
2022/04/05 无线电