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中使用smtplib和email模块发送邮件实例
Apr 22 Python
利用标准库fractions模块让Python支持分数类型的方法详解
Aug 11 Python
用python与文件进行交互的方法
Mar 01 Python
TensorFlow利用saver保存和提取参数的实例
Jul 26 Python
使用python PIL库实现简单验证码的去噪方法步骤
May 10 Python
对PyQt5的输入对话框使用(QInputDialog)详解
Jun 25 Python
python导包的几种方法(自定义包的生成以及导入详解)
Jul 15 Python
python 使用pygame工具包实现贪吃蛇游戏(多彩版)
Oct 30 Python
如何解决tensorflow恢复模型的特定值时出错
Feb 06 Python
VSCode基础使用与VSCode调试python程序入门的图文教程
Mar 30 Python
Python能做什么
Jun 02 Python
利用Python的folium包绘制城市道路图的实现示例
Aug 24 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/05/10 PHP
PHP自毁程序(慎用)
2015/07/09 PHP
php下载文件超时时间的设置方法
2016/10/06 PHP
PHP 进程池与轮询调度算法实现多任务的示例代码
2019/11/26 PHP
Laravel框架数据库迁移操作实例详解
2020/04/06 PHP
JavaScript中令你抓狂的魔术变量
2006/11/30 Javascript
通过MSXML2自动获取QQ个人头像及在线情况(给初学者)
2007/01/22 Javascript
JQuery 引发两次$(document.ready)事件
2010/01/15 Javascript
Js 中debug方式
2010/02/07 Javascript
JQuery弹出层示例可自定义
2014/05/19 Javascript
JavaScript DOM基础
2015/04/13 Javascript
jQuery实现自动滚动到页面顶端的方法
2015/05/22 Javascript
JavaScript使表单中的内容显示在屏幕上的方法
2015/06/29 Javascript
vue跨域解决方法
2017/10/15 Javascript
微信小程序网络封装(简单高效)
2018/08/06 Javascript
Vue条件循环判断+计算属性+绑定样式v-bind的实例
2018/09/18 Javascript
vue2.0中set添加属性后视图不能更新的解决办法
2019/02/22 Javascript
Vue使用NProgress进度条的方法
2019/09/21 Javascript
学前端,css与javascript重难点浅析
2020/06/11 Javascript
Python实现全角半角转换的方法
2014/08/18 Python
Python做文本按行去重的实现方法
2016/10/19 Python
django框架如何集成celery进行开发
2017/05/24 Python
基于Python 装饰器装饰类中的方法实例
2018/04/21 Python
python实现网页自动签到功能
2019/01/21 Python
python 公共方法汇总解析
2019/09/16 Python
Kathmandu英国网站:新西兰户外运动品牌
2017/03/27 全球购物
国外最大的眼镜网站:Coastal
2017/08/09 全球购物
学前教育毕业生自荐信
2013/10/29 职场文书
《口技》教学反思
2014/02/21 职场文书
机关道德讲堂实施方案
2014/03/15 职场文书
第一批党的群众路线教育实践活动总结报告
2014/07/03 职场文书
学前教育专业求职信
2014/09/02 职场文书
公司党的群众路线教育实践活动领导班子对照检查材料
2014/09/25 职场文书
2015新年联欢晚会开场白
2014/12/14 职场文书
趣味运动会新闻稿
2015/07/17 职场文书
MySql学习笔记之事务隔离级别详解
2021/05/12 MySQL