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中命名空间的查找规则LEGB
Aug 06 Python
Python中使用platform模块获取系统信息的用法教程
Jul 08 Python
python 内置函数filter
Jun 01 Python
python3 http提交json参数并获取返回值的方法
Dec 19 Python
解决Python plt.savefig 保存图片时一片空白的问题
Jan 10 Python
详解python使用turtle库来画一朵花
Mar 21 Python
python实现图片压缩代码实例
Aug 12 Python
python Web flask 视图内容和模板实现代码
Aug 23 Python
TensorFlow Saver:保存和读取模型参数.ckpt实例
Feb 10 Python
Django media static外部访问Django中的图片设置教程
Apr 07 Python
13个Pandas实用技巧,助你提高开发效率
Aug 19 Python
python 获取计算机的网卡信息
Feb 18 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 socket方式提交的post详解
2008/07/19 PHP
PHP中preg_match正则匹配中的/u、/i、/s含义
2015/04/17 PHP
php文件系统处理方法小结
2016/05/23 PHP
php 获取xml接口数据的处理方法
2018/05/31 PHP
JS验证身份证有效性示例
2013/10/11 Javascript
简洁Ajax函数处理(示例代码)
2013/11/15 Javascript
js获取html页面节点方法(递归方式)
2013/12/13 Javascript
JS打字效果的动态菜单代码分享
2015/08/21 Javascript
如何动态加载外部Javascript文件
2015/12/02 Javascript
AngularJS 依赖注入详解和简单实例
2016/07/28 Javascript
vue给input file绑定函数获取当前上传的对象完美实现方法
2017/12/15 Javascript
Vue使用mixins实现压缩图片代码
2018/03/14 Javascript
使用vue的transition完成滑动过渡的示例代码
2018/06/25 Javascript
修改vue+webpack run build的路径方法
2018/09/01 Javascript
详解Vue基于vue-quill-editor富文本编辑器使用心得
2019/01/03 Javascript
模块化react-router配置方法详解
2019/06/03 Javascript
layui关闭弹窗后刷新主页面和当前更改项的例子
2019/09/06 Javascript
JS中的继承操作实例总结
2020/06/06 Javascript
Python GAE、Django导出Excel的方法
2008/11/24 Python
python3使用urllib示例取googletranslate(谷歌翻译)
2014/01/23 Python
Python松散正则表达式用法分析
2016/04/29 Python
Win8.1下安装Python3.6提示0x80240017错误的解决方法
2018/07/31 Python
如何使用Python标准库进行性能测试
2019/06/25 Python
用python实现名片管理系统
2020/06/18 Python
Python识别处理照片中的条形码
2020/11/16 Python
基于CSS3实现的几个小loading效果
2018/09/27 HTML / CSS
纯css3实现鼠标经过图片显示描述的动画效果
2014/09/01 HTML / CSS
html5 Canvas画图教程(4)—未闭合的路径及渐变色的填充方法
2013/01/09 HTML / CSS
AJAX的优缺点都有什么
2015/08/18 面试题
个人自我鉴定总结
2014/03/25 职场文书
酒店保洁员岗位职责
2015/02/26 职场文书
学校国庆节活动总结
2015/03/23 职场文书
业务员岗位职责范本
2015/04/03 职场文书
同学聚会通知书
2015/04/20 职场文书
通用员工手册范本
2015/05/14 职场文书
Go 语言中 20 个占位符的整理
2021/10/16 Golang