Python中的集合类型知识讲解


Posted in Python onAugust 19, 2015

集合类型
        数学上,,把set称做由不同的元素组成的集合,集合(set)的成员通常被称做集合元素(set elements)。Python把这个概念引入到它的集合类型对象里。集合对象是一组无序排列的可哈希的值,集合成员可以做字典中的键。数学集合转为Python的集合对象很有效,集合关系测试和union、intersection等操作符在Python里也同样如我们所预想地那样工作。
        和其他容器类型一样,集合支持用in和not in操作符检查成员,由len()内建函数得到集合的基数(大小), 用 for 循环迭代集合的成员。但是因为集合本身是无序的,不可以为集合创建索引或执行切片(slice)操作,也没有键(keys)可用来获取集合中元素的值。
        集合(sets)有两种不同的类型:可变集合(set)和不可变集合(frozenset)。对可变集合(set),可以添加和删除元素,对不可变集合(frozenset)则不允许这样做。注意:可变集合(set)不是可哈希的,因此既不能用做字典的键也不能做其他集合中的元素。不可变集合
(frozenset)则正好相反,即它们有哈希值,能被用做字典的键或是作为集合中的一个成员。
         集合操作符和关系符号: 

Python中的集合类型知识讲解

  集合类型的实际操作:

(1)如何创建集合类型和给集合赋值
        集合与列表( [ ] )和字典( { } ) 不同,没有特别的语法格式。列表和字典可以分别用他们自己的工厂方法 list() 和 dict() 创建,这也是集合被创建的唯一方法:用集合的工厂方法set()和frozenset()。

>>> s = set('cheeseshop') 
  >>> s 
  set(['c', 'e', 'h', 'o', 'p', 's']) 
  >>> t = frozenset('bookshop') 
  >>> t 
  frozenset(['b', 'h', 'k', 'o', 'p', 's']) 
  >>> len(s), len(t) 
  (6, 6) 
  >>> s == t 
  False

(2)如何访问集合中的值
       可以遍历查看集合成员或检查某项元素是否是一个集合中的成员。

>>> 'k' in t 
  True 
  >>> for i in s: 
  ...   print i 
  ...  
  c 
  e 
  h 
  o 
  p 
  s

(3)如何更新集合
         用各种集合内建的方法和操作符添加和删除集合的成员。只有可变集合能被修改,试图修改不可变集合会引发异常。
[html] view plaincopy在CODE上查看代码片派生到我的代码片

>>> s.add('z') 
  >>> s 
  set(['c', 'e', 'h', 'o', 'p', 's', 'z']) 
  >>> s.update('pypi') 
  >>> s 
  set(['c', 'e', 'i', 'h', 'o', 'p', 's', 'y', 'z']) 
  >>> s.remove('z') 
  >>> s -= set('pypi') 
  >>> s 
  set(['c', 'e', 'h', 'o', 's'])

(4)如何删除集合中的成员和集合
        删除集合成员remove()内建方法。删除集合本身,可以像删除任何Python对象一样,令集合超出它的作用范围或调用del将它们直接清除出当前的名字空间。如果它的引用计数为零,也会被标记以便被垃圾回收。如del s。

实例:
用集合的工厂方法 set()和 frozenset():

>>> s = set('cheeseshop') 
  >>> s 
  set(['c', 'e', 'h', 'o', 'p', 's']) 
  >>> t = frozenset('bookshop') 
  >>> t 
  frozenset(['b', 'h', 'k', 'o', 'p', 's']) 
  >>> type(s) 
  <type 'set'> 
  >>> type(t) 
  <type 'frozenset'>

如何更新集合用各种集合内建的方法和操作符添加和删除集合的成员:

>>> s.add('z') 
  >>> s 
  set(['c', 'e', 'h', 'o', 'p', 's', 'z']) 
  >>> s.update('pypi') 
  >>> s 
  set(['c', 'e', 'i', 'h', 'o', 'p', 's', 'y', 'z']) 
  >>> s.remove('z') 
  >>> s 
  set(['c', 'e', 'i', 'h', 'o', 'p', 's', 'y']) 
  >>> s -= set('pypi') 
  >>> s 
  set(['c', 'e', 'h', 'o', 's'])

 

删除集合

del s

成员关系 (in, not in)

>>> s = set('cheeseshop') 
  >>> t = frozenset('bookshop') 
  >>> 'k' in s 
  False 
  >>> 'k' in t 
  True 
  >>> 'c' not in t 
  True

集合等价/不等价

>>> s == t 
  False 
  >>> s != t 
  True 
  >>> u = frozenset(s) 
  >>> s == u 
  True 
  >>> set('posh') == set('shop') 
  True

差补/相对补集( ? )两个集合(s 和t)的差补或相对补集是指一个集合C,该集合中的元素,只属于集合s,而不属
于集合t。差符号有一个等价的方法,

difference(). 
  >>> s - t 
  set(['c', 'e'])

对称差分( ^ ):对称差分是集合的XOR以上文章就是Python字典对集合类型的实际应用步骤。

Python 相关文章推荐
python将图片文件转换成base64编码的方法
Mar 14 Python
Python中的map()函数和reduce()函数的用法
Apr 27 Python
Python基于回溯法解决01背包问题实例
Dec 06 Python
python编写分类决策树的代码
Dec 21 Python
python使用wxpy轻松实现微信防撤回的方法
Feb 21 Python
python使用paramiko模块通过ssh2协议对交换机进行配置的方法
Jul 25 Python
对Pytorch神经网络初始化kaiming分布详解
Aug 18 Python
Python浮点数四舍五入问题的分析与解决方法
Nov 19 Python
python批量处理txt文件的实例代码
Jan 13 Python
jupyter notebook 恢复误删单元格或者历史代码的实现
Apr 17 Python
Python使用Turtle模块绘制国旗的方法示例
Feb 28 Python
Python机器学习之PCA降维算法详解
May 19 Python
深入理解Python中字典的键的使用
Aug 19 #Python
详解Python中映射类型的内建函数和工厂函数
Aug 19 #Python
详解Python中映射类型(字典)操作符的概念和使用
Aug 19 #Python
Python中字典的基础知识归纳小结
Aug 19 #Python
Python在Windows和在Linux下调用动态链接库的教程
Aug 18 #Python
Python中map,reduce,filter和sorted函数的使用方法
Aug 17 #Python
Nginx搭建HTTPS服务器和强制使用HTTPS访问的方法
Aug 16 #Python
You might like
php实现的用户查询类实例
2015/06/18 PHP
[原创]smarty简单模板变量输出方法
2016/07/09 PHP
yii2控制器Controller Ajax操作示例
2016/07/23 PHP
yii2中关于加密解密的那些事儿
2018/06/12 PHP
PHP+iframe模拟Ajax上传文件功能示例
2019/07/02 PHP
基于jquery的bankInput银行卡账号格式化
2012/08/22 Javascript
Javascript 完美运动框架(逐行分析代码,让你轻松了运动的原理)
2015/01/23 Javascript
javascript算法题:求任意一个1-9位不重复的N位数在该组合中的大小排列序号
2015/04/01 Javascript
JS实现的表格操作类详解(添加,删除,排序,上移,下移)
2015/12/22 Javascript
利用JQuery实现datatables插件的增加和删除行功能
2017/01/06 Javascript
使用JavaScriptCore实现OC和JS交互详解
2017/03/28 Javascript
基于JavaScript实现抽奖系统
2018/01/16 Javascript
bootstrap中日历范围选择插件daterangepicker的使用详解
2018/04/17 Javascript
Vue中使用webpack别名的方法实例详解
2018/06/19 Javascript
vue中引入第三方字体文件的方法示例
2018/12/17 Javascript
使用JavaScript解析URL的方法示例
2019/03/01 Javascript
Vue2.x通用编辑组件的封装及应用详解
2019/05/28 Javascript
JavaScript实现轮播图片完整代码
2020/03/07 Javascript
js实现简单的点名器随机色实例代码
2020/09/20 Javascript
Mac 上切换Python多版本
2017/06/17 Python
基于anaconda下强大的conda命令介绍
2018/06/11 Python
使用Python抓取豆瓣影评数据的方法
2018/10/17 Python
python用win32gui遍历窗口并设置窗口位置的方法
2019/07/26 Python
python 公共方法汇总解析
2019/09/16 Python
python读取ini配置文件过程示范
2019/12/23 Python
TensorFlow内存管理bfc算法实例
2020/02/03 Python
python剪切视频与合并视频的实现
2020/03/03 Python
python修改微信和支付宝步数的示例代码
2020/10/12 Python
python 如何设置守护进程
2020/10/29 Python
浅谈基于HTML5的在线视频播放方案
2016/02/18 HTML / CSS
预备党员思想汇报范文
2013/12/29 职场文书
房地产项目建议书
2014/03/12 职场文书
我的老师教学反思
2014/05/01 职场文书
计算机专业求职信
2014/06/02 职场文书
2015年秋季运动会广播稿
2015/08/19 职场文书
5个实用的JavaScript新特性
2022/06/16 Javascript