跟老齐学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 数据结构之堆栈实例代码
Jan 22 Python
Python中防止sql注入的方法详解
Feb 25 Python
python实现机械分词之逆向最大匹配算法代码示例
Dec 13 Python
详解Python最长公共子串和最长公共子序列的实现
Jul 07 Python
wtfPython—Python中一组有趣微妙的代码【收藏】
Aug 31 Python
python 异或加密字符串的实例
Oct 14 Python
详解pandas.DataFrame中删除包涵特定字符串所在的行
Apr 04 Python
Python Charles抓包配置实现流程图解
Sep 29 Python
Python Selenium库的基本使用教程
Jan 04 Python
如何利用opencv判断两张图片是否相同详解
Jul 07 Python
Python内置数据结构列表与元组示例详解
Aug 04 Python
如何用六步教会你使用python爬虫爬取数据
Apr 06 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 url地址栏传中文乱码解决方法集合
2010/06/25 PHP
PHP 文件编程综合案例-文件上传的实现
2013/07/03 PHP
Zend studio文件注释模板设置方法
2013/09/29 PHP
PHP中的类型提示(type hinting)功能介绍
2015/07/01 PHP
Yii2实现UploadedFile上传文件示例
2017/02/15 PHP
PHP 应用容器化以及部署方法
2018/02/12 PHP
jquery中获得元素尺寸和坐标的方法整理
2014/05/18 Javascript
Javascript 函数parseInt()转换时出现bug问题
2014/05/20 Javascript
再探JavaScript作用域
2014/09/24 Javascript
JsRender实用入门教程
2014/10/31 Javascript
浅析AngularJS中的生命周期和延迟处理
2015/06/18 Javascript
JavaScript操作URL的相关内容集锦
2015/10/29 Javascript
javascript简单实现等比例缩小图片的方法
2016/07/27 Javascript
修改jquery中dialog的title属性方法(推荐)
2016/08/26 Javascript
nodejs个人博客开发第一步 准备工作
2017/04/12 NodeJs
bootstrap Table插件使用demo
2017/08/07 Javascript
js如何找出字符串中的最长回文串
2018/06/04 Javascript
详解vue axios用post提交的数据格式
2018/08/07 Javascript
React Native中ScrollView组件轮播图与ListView渲染列表组件用法实例分析
2020/01/06 Javascript
JS apply用法总结和使用场景实例分析
2020/03/14 Javascript
[02:03]永远的信仰DOTA2 中国军团历届国际邀请赛回顾
2016/06/26 DOTA
Python列出一个文件夹及其子目录的所有文件
2016/06/30 Python
python将一个英文语句以单词为单位逆序排放的方法
2018/12/20 Python
Python魔法方法 容器部方法详解
2020/01/02 Python
Python timer定时器两种常用方法解析
2020/01/20 Python
python新手学习使用库
2020/06/11 Python
Python性能分析工具py-spy原理用法解析
2020/07/27 Python
阿迪达斯墨西哥官方网站:adidas墨西哥
2017/11/03 全球购物
培训心得体会
2013/12/29 职场文书
文明礼仪小标兵事迹
2014/01/12 职场文书
21岁生日感言
2014/02/27 职场文书
本科毕业生自荐信
2014/05/26 职场文书
小学庆六一活动总结
2014/08/28 职场文书
纪念九一八事变演讲稿:勿忘国耻
2014/09/14 职场文书
乔布斯辞职信(中英文对照)
2015/05/12 职场文书
幼儿园语言教学反思
2016/02/23 职场文书