跟老齐学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 获取本机ip地址的两个方法
Feb 25 Python
Python简单进程锁代码实例
Apr 27 Python
python中pygame针对游戏窗口的显示方法实例分析(附源码)
Nov 11 Python
Python多进程multiprocessing用法实例分析
Aug 18 Python
删除python pandas.DataFrame 的多重index实例
Jun 08 Python
windows下cx_Freeze生成Python可执行程序的详细步骤
Oct 09 Python
对python中类的继承与方法重写介绍
Jan 20 Python
Python零基础入门学习之输入与输出
Apr 03 Python
python字符串Intern机制详解
Jul 01 Python
深入浅析python 中的self和cls的区别
Jun 20 Python
Python内置函数及功能简介汇总
Oct 13 Python
利用Selenium添加cookie实现自动登录的示例代码(fofa)
May 08 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
德生S2000南麂列岛台湾FM收听记录
2021/03/02 无线电
一个数据采集类
2007/02/14 PHP
destoon调用自定义模板及样式的公告栏
2014/06/21 PHP
php 5.6版本中编写一个PHP扩展的简单示例
2015/01/20 PHP
使用JavaScript创建新样式表和新样式规则
2016/06/14 PHP
使用PHPExcel实现数据批量导出为excel表格的方法(必看)
2017/06/09 PHP
Aster vs KG BO3 第二场2.18
2021/03/10 DOTA
如何实现动态删除javascript函数
2007/05/27 Javascript
javascript中判断一个值是否在数组中并没有直接使用
2012/12/17 Javascript
关于jQuery object and DOM element
2013/04/15 Javascript
使用jquery中height()方法获取各种高度大全
2014/04/02 Javascript
关于js二维数组和多维数组的定义声明(详解)
2016/10/02 Javascript
Bootstrop实现多级下拉菜单功能
2016/11/24 Javascript
Vue 过渡实现轮播图效果
2017/03/27 Javascript
react-router实现跳转传值的方法示例
2017/05/27 Javascript
vue forEach循环数组拿到自己想要的数据方法
2018/09/21 Javascript
js canvas实现二维码和图片合成的海报
2020/11/19 Javascript
python求斐波那契数列示例分享
2014/02/14 Python
在Python中用split()方法分割字符串的使用介绍
2015/05/20 Python
python类和继承用法实例
2015/07/07 Python
python 自动轨迹绘制的实例代码
2019/07/05 Python
Python使用指定端口进行http请求的例子
2019/07/25 Python
Pandas DataFrame求差集的示例代码
2020/12/13 Python
python中pickle模块浅析
2020/12/29 Python
巴西备受欢迎的服装和生活方式品牌:FARM Rio
2020/02/04 全球购物
加拿大拼图大师:Puzzle Master
2020/12/28 全球购物
亿企通软件测试面试题
2012/04/10 面试题
JAVA程序设计笔试题面试题一套
2015/07/28 面试题
新闻网站实习自我鉴定
2013/09/25 职场文书
高中学生会竞选演讲稿
2014/08/25 职场文书
个人作风建设心得体会
2014/10/22 职场文书
2014年售后服务工作总结
2014/11/18 职场文书
Vue3 Composition API的使用简介
2021/03/29 Vue.js
Redis入门教程详解
2021/08/30 Redis
python套接字socket通信
2022/04/01 Python
vue动态绑定style样式
2022/04/20 Vue.js