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 相关文章推荐
web.py在模板中输出美元符号的方法
Aug 26 Python
Python单链表的简单实现方法
Sep 23 Python
python如何压缩新文件到已有ZIP文件
Mar 14 Python
python实现堆和索引堆的代码示例
Mar 19 Python
PyQt5每天必学之像素图控件QPixmap
Apr 19 Python
python爬虫获取百度首页内容教学
Dec 23 Python
Python + OpenCV 实现LBP特征提取的示例代码
Jul 11 Python
Python 实现3种回归模型(Linear Regression,Lasso,Ridge)的示例
Oct 15 Python
pytorch 使用半精度模型部署的操作
May 24 Python
Python中OpenCV实现简单车牌字符切割
Jun 11 Python
Pygame Rect区域位置的使用(图文)
Nov 17 Python
Python如何让字典保持有序排列
Apr 29 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读取EXCEL文件 php excelreader读取excel文件
2012/12/06 PHP
PHP多线程批量采集下载美女图片的实现代码(续)
2013/06/03 PHP
php计算几分钟前、几小时前、几天前的几个函数、类分享
2014/04/09 PHP
PHP积分兑换接口实例
2015/02/09 PHP
php实现仿写CodeIgniter的购物车类
2015/07/29 PHP
PHP实现支持加盐的图片加密解密
2016/09/09 PHP
双击滚屏-常用推荐
2006/11/29 Javascript
js parseInt(&quot;08&quot;)未指定进位制问题
2010/06/19 Javascript
浅谈javascript中createElement事件
2014/12/05 Javascript
JavaScript实现点击按钮直接打印
2016/01/06 Javascript
AngularJS基础 ng-class-odd 指令示例
2016/08/01 Javascript
jquery 手势密码插件
2017/03/17 Javascript
使用jQuery实现页面定时弹出广告效果
2017/08/24 jQuery
Web技术实现移动监测的介绍
2017/09/18 Javascript
js移动端图片压缩上传功能
2020/08/18 Javascript
vue axios 在页面切换时中断请求方法 ajax
2018/03/05 Javascript
搭建vue开发环境
2018/07/19 Javascript
Bootstrap Fileinput 4.4.7文件上传实例详解
2018/07/25 Javascript
JS实现打字游戏
2019/12/17 Javascript
JS数组方法reduce的用法实例分析
2020/03/03 Javascript
VUE实现Studio管理后台之鼠标拖放改变窗口大小
2020/03/04 Javascript
vue项目中使用bpmn-自定义platter的示例代码
2020/05/11 Javascript
vue项目中使用多选框的实例代码
2020/07/22 Javascript
[23:18]Spirit vs Liquid Supermajor小组赛A组 BO3 第二场 6.2
2018/06/03 DOTA
python实现字典(dict)和字符串(string)的相互转换方法
2017/03/01 Python
shell命令行,一键创建 python 模板文件脚本方法
2018/03/20 Python
python中redis查看剩余过期时间及用正则通配符批量删除key的方法
2018/07/30 Python
django创建最简单HTML页面跳转方法
2019/08/16 Python
耐克中国官方商城:Nike中国
2018/10/18 全球购物
Lacoste澳大利亚官网:服装、鞋类及配饰
2018/11/14 全球购物
Java软件工程师综合面试题笔试题
2013/09/08 面试题
元旦晚会主持词
2014/03/24 职场文书
乡镇交通安全实施方案
2014/03/29 职场文书
2014年售票员工作总结
2014/11/19 职场文书
2014年培训工作总结范文
2014/11/27 职场文书
部门经理助理岗位职责
2015/04/13 职场文书