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中使用tarfile压缩、解压tar归档文件示例
Apr 05 Python
Python 获得命令行参数的方法(推荐)
Jan 24 Python
python3+PyQt5使用数据库窗口视图
Apr 24 Python
python模拟表单提交登录图书馆
Apr 27 Python
pyQt4实现俄罗斯方块游戏
Jun 26 Python
python一行sql太长折成多行并且有多个参数的方法
Jul 19 Python
对python中大文件的导入与导出方法详解
Dec 28 Python
python assert的用处示例详解
Apr 01 Python
python实现从本地摄像头和网络摄像头截取图片功能
Jul 11 Python
python图形开发GUI库wxpython使用方法详解
Feb 14 Python
python如何求100以内的素数
May 27 Python
django美化后台django-suit的安装配置操作
Jul 12 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获取类中常量,属性,及方法列表的方法
2009/04/09 PHP
判断PHP数组是否为空的代码
2011/09/08 PHP
获取PHP警告错误信息的解决方法
2013/06/03 PHP
将FCKeditor导入PHP+SMARTY的实现方法
2015/01/15 PHP
浅谈Laravel核心解读之Console内核
2018/12/02 PHP
laravel框架实现敏感词汇过滤功能示例
2020/02/15 PHP
document.open() 与 document.write()的区别
2007/08/13 Javascript
jQuery弹出层插件简化版代码下载
2008/10/16 Javascript
jquery中对表单的基本操作代码
2010/07/29 Javascript
有关js的变量作用域和this指针的讨论
2010/12/16 Javascript
将nodejs打包工具整合到鼠标右键的方法
2013/05/11 NodeJs
JS定义回车事件(实现代码)
2013/07/08 Javascript
jQuery中的基本选择器用法学习教程
2016/04/14 Javascript
微信小程序 rpx 尺寸单位详细介绍
2016/10/13 Javascript
angular实现页面打印局部功能的思考与方法
2018/04/13 Javascript
vue加载完成后的回调函数方法
2018/09/07 Javascript
NodeJS服务器实现gzip压缩的示例代码
2018/10/12 NodeJs
微信小程序实现获取准确的腾讯定位地址功能示例
2019/03/27 Javascript
NodeJS有难度的面试题(能答对几个)
2019/10/09 NodeJs
JS实现压缩上传图片base64长度功能
2019/12/03 Javascript
JavaScript console的使用方法实例分析
2020/04/28 Javascript
Ant design vue table 单击行选中 勾选checkbox教程
2020/10/24 Javascript
python开发的小球完全弹性碰撞游戏代码
2013/10/15 Python
Python pyinotify模块实现对文档的实时监控功能方法
2018/10/13 Python
详解python中的数据类型和控制流
2019/08/08 Python
深入浅析python 中的self和cls的区别
2020/06/20 Python
史上最详细的Python打包成exe文件教程
2021/01/17 Python
Python tkinter之Bind(绑定事件)的使用示例
2021/02/05 Python
欧洲当代手工玻璃和瓷器的领先品牌:LSA International
2018/06/03 全球购物
美国专业汽车音响和移动电子产品零售商:Car Toys
2019/05/13 全球购物
团队精神演讲稿
2013/12/31 职场文书
水果连锁超市创业计划书
2014/01/24 职场文书
关于爱国的标语
2014/06/24 职场文书
2014年语文教师工作总结
2014/12/18 职场文书
个人党性锻炼总结
2015/03/05 职场文书
2015年暑假生活总结
2015/07/13 职场文书