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 内置字符串处理函数的使用方法
Jun 11 Python
Python中的闭包实例详解
Aug 29 Python
Python写入CSV文件的方法
Jul 08 Python
Python算法之图的遍历
Nov 16 Python
使用Python实现在Windows下安装Django
Oct 17 Python
Python获取航线信息并且制作成图的讲解
Jan 03 Python
新手入门Python编程的8个实用建议
Jul 12 Python
Django 外键的使用方法详解
Jul 19 Python
Django 后台获取文件列表 InMemoryUploadedFile的例子
Aug 07 Python
Python绘制三角函数图(sin\cos\tan)并标注特定范围的例子
Dec 04 Python
python语言的优势是什么
Jun 17 Python
python+excel接口自动化获取token并作为请求参数进行传参操作
Nov 10 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怎么实现网站保存快捷方式方便用户随时浏览
2013/08/15 PHP
PHP 接入微信扫码支付总结(总结篇)
2016/11/03 PHP
TP5框架实现自定义分页样式的方法示例
2020/04/05 PHP
javascript实现可拖动变色并关闭层窗口实例
2015/05/15 Javascript
jquery表单对象属性过滤选择器实例分析
2015/05/18 Javascript
异步安全加载javascript文件的方法
2015/07/21 Javascript
轻量级javascript 框架Backbone使用指南
2015/07/24 Javascript
javascript字符串函数汇总
2015/12/06 Javascript
分分钟学会vue中vuex的应用(入门教程)
2017/09/14 Javascript
Angular 开发学习之Angular CLI的安装使用
2017/12/31 Javascript
详解如何制作并发布一个vue的组件的npm包
2018/11/10 Javascript
tracking.js页面人脸识别插件使用方法
2020/04/16 Javascript
vue双向绑定数据限制长度的方法
2019/11/04 Javascript
JS正则表达式验证端口范围(0-65535)
2020/01/06 Javascript
JS中作用域以及变量范围分析
2020/07/18 Javascript
vue实现路由懒加载的3种方法示例
2020/09/01 Javascript
Python Socket编程入门教程
2014/07/11 Python
python编程开发之textwrap文本样式处理技巧
2015/11/13 Python
对python中的iter()函数与next()函数详解
2018/10/18 Python
Python读取csv文件分隔符设置方法
2019/01/14 Python
python如何通过闭包实现计算器的功能
2020/02/22 Python
python递归函数求n的阶乘,优缺点及递归次数设置方式
2020/04/02 Python
python 5个实用的技巧
2020/09/27 Python
python 中关于pycharm选择运行环境的问题
2020/10/31 Python
CSS3教程:新增加的结构伪类
2009/04/02 HTML / CSS
Marks & Spencer爱尔兰:英国马莎百货
2016/04/20 全球购物
Penhaligon’s英国官网:成立于1870年的英国香水制造商
2021/02/18 全球购物
护理职业生涯规划书
2014/01/24 职场文书
四风问题自查报告剖析材料
2014/02/08 职场文书
信息服务专业毕业生求职信
2014/03/02 职场文书
工作疏忽、懈怠的检讨书
2014/09/11 职场文书
个人租房协议书(范本)
2014/10/14 职场文书
支行行长竞聘报告
2014/11/06 职场文书
工作岗位职责范本
2015/02/15 职场文书
Vue项目中如何封装axios(统一管理http请求)
2021/05/02 Vue.js
python文件与路径操作神器 pathlib
2022/04/01 Python