跟老齐学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实现动态加载模块、类、函数的方法分析
Jul 18 Python
python pandas dataframe 按列或者按行合并的方法
Apr 12 Python
在CMD命令行中运行python脚本的方法
May 12 Python
python中的tcp示例详解
Dec 09 Python
Django命名URL和反向解析URL实现解析
Aug 09 Python
基于Python的图像数据增强Data Augmentation解析
Aug 13 Python
python实现布隆过滤器及原理解析
Dec 08 Python
python上selenium的弹框操作实现
Jul 13 Python
pandas使用函数批量处理数据(map、apply、applymap)
Nov 27 Python
python爬虫请求头的使用
Dec 01 Python
Python扫描端口的实现
Jan 25 Python
python pygame 开发五子棋双人对弈
May 02 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
基于mysql的bbs设计(三)
2006/10/09 PHP
php创建sprite
2014/02/11 PHP
ThinkPHP的Widget扩展实例
2014/06/19 PHP
php利用smtp类实现电子邮件发送
2015/10/30 PHP
PHP文字转图片功能原理与实现方法分析
2017/08/31 PHP
laravel 5.5 关闭token的3种实现方式
2019/10/24 PHP
js word表格动态添加代码
2010/06/07 Javascript
JQuery中$.ajax()方法参数详解及应用
2013/12/12 Javascript
jquery退出each循环的写法
2014/02/26 Javascript
JS实现的网页倒计时数字时钟效果
2015/03/02 Javascript
js跨域请求的5中解决方式
2015/07/02 Javascript
js简单实现Select互换数据的方法
2015/08/17 Javascript
jQuery实现右侧显示可向左滑动展示的深色QQ客服效果代码
2015/10/23 Javascript
jQuery实现可以编辑的表格实例详解【附demo源码下载】
2016/07/09 Javascript
本地Bootstrap文件字体图标引入却无法显示问题的解决方法
2020/04/18 Javascript
iview中Select 选择器多选校验方法
2018/03/15 Javascript
详解webpack2异步加载套路
2018/09/14 Javascript
Vue官方推荐AJAX组件axios.js使用方法详解与API
2018/10/09 Javascript
JS实现利用闭包判断Dom元素和滚动条的方向示例
2019/08/26 Javascript
解决layer弹出层msg的文字不显示的问题
2019/09/11 Javascript
JS 事件机制完整示例分析
2020/01/15 Javascript
使用C语言来扩展Python程序和Zope服务器的教程
2015/04/14 Python
python PyTorch参数初始化和Finetune
2018/02/11 Python
postman传递当前时间戳实例详解
2019/09/14 Python
python实现批量修改文件名
2020/03/23 Python
TensorFLow 数学运算的示例代码
2020/04/21 Python
使用Python FastAPI构建Web服务的实现
2020/06/08 Python
python实现自动清理重复文件
2020/08/24 Python
利用CSS3的特性改变文本选中时的颜色
2013/09/11 HTML / CSS
英国高级百货公司:Harvey Nichols
2017/01/29 全球购物
面试后感谢信
2014/02/01 职场文书
逃出克隆岛观后感
2015/06/09 职场文书
单位病假条范文
2015/08/17 职场文书
导游词之云南丽江-泸沽湖
2019/09/26 职场文书
用Python selenium实现淘宝抢单机器人
2021/06/18 Python
MySQL为数据表建立索引的原则详解
2022/03/03 MySQL