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脚本实现网卡流量监控
Feb 14 Python
Python验证码识别的方法
Jul 10 Python
python自带的http模块详解
Nov 06 Python
对Python中type打开文件的方式介绍
Apr 28 Python
pandas.dataframe按行索引表达式选取方法
Oct 30 Python
Python读取YUV文件,并显示的方法
Dec 04 Python
python遍历文件目录、批量处理同类文件
Aug 31 Python
python 实现多线程下载m3u8格式视频并使用fmmpeg合并
Nov 15 Python
Django 自定义分页器的实现代码
Nov 24 Python
Python绘图之柱形图绘制详解
Jul 28 Python
Jmeter调用Python脚本实现参数互相传递的实现
Jan 22 Python
python全面解析接口返回数据
Feb 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引用计数器进行垃圾收集机制介绍
2012/09/19 PHP
利用yahoo汇率接口实现实时汇率转换示例 汇率转换器
2014/01/14 PHP
javascript 特性检测并非浏览器检测
2010/01/15 Javascript
js 蒙版进度条(结合图片)
2010/03/10 Javascript
在Node.js中实现文件复制的方法和实例
2014/06/05 Javascript
Egret引擎开发指南之创建项目
2014/09/03 Javascript
JQuery radio(单选按钮)操作方法汇总
2015/04/15 Javascript
JavaScript实现仿网易通行证表单验证
2015/05/25 Javascript
一个简单的JavaScript Map实例(分享)
2016/08/03 Javascript
Require.JS中的几种define定义方式示例
2017/06/01 Javascript
在weex中愉快的使用scss的方法步骤
2020/01/02 Javascript
javascript实现图片轮换动作方法
2020/08/07 Javascript
[02:04]2016国际邀请赛中国区预选赛VG.R晋级之路
2016/07/01 DOTA
Python备份Mysql脚本
2008/08/11 Python
Python常用内置函数总结
2015/02/08 Python
python中实现迭代器(iterator)的方法示例
2017/01/19 Python
Python闭包之返回函数的函数用法示例
2018/01/27 Python
python实现反转部分单向链表
2018/09/27 Python
python并发和异步编程实例
2018/11/15 Python
python-django中的APPEND_SLASH实现方法
2019/06/21 Python
Django使用中间件解决前后端同源策略问题
2019/09/02 Python
Ubuntu下Python+Flask分分钟搭建自己的服务器教程
2019/11/19 Python
python递归调用中的坑:打印有值, 返回却None
2020/03/16 Python
Tensorflow tf.nn.atrous_conv2d如何实现空洞卷积的
2020/04/20 Python
tensorflow基于CNN实战mnist手写识别(小白必看)
2020/07/20 Python
python基于opencv 实现图像时钟
2021/01/04 Python
CSS3 不定高宽垂直水平居中的几种方式
2020/03/26 HTML / CSS
HTML5的结构和语义(4):语义性的内联元素
2008/10/17 HTML / CSS
iframe跨域的几种常用方法
2019/11/11 HTML / CSS
英国设计师泳装、沙滩装和比基尼在线精品店:Beach Cafe
2019/08/28 全球购物
父亲八十大寿答谢词
2014/01/23 职场文书
网络书店创业计划书
2014/02/07 职场文书
大学生职业规划书的范本
2014/02/18 职场文书
关于环保的演讲稿
2014/05/10 职场文书
医德医风演讲稿
2014/05/20 职场文书
微信小程序调用python模型
2022/04/21 Python