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中sys.argv参数用法实例分析
May 20 Python
python类:class创建、数据方法属性及访问控制详解
Jul 25 Python
python负载均衡的简单实现方法
Feb 04 Python
pandas 获取季度,月度,年度首尾日期的方法
Apr 11 Python
ubuntu17.4下为python和python3装上pip的方法
Jun 12 Python
Python远程视频监控程序的实例代码
May 05 Python
使用python远程操作linux过程解析
Dec 04 Python
Python模块future用法原理详解
Jan 20 Python
Pycharm调试程序技巧小结
Aug 08 Python
python的setattr函数实例用法
Dec 16 Python
python 遍历磁盘目录的三种方法
Apr 02 Python
python可视化大屏库big_screen示例详解
Nov 23 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开发框架kohana3 自定义路由设置示例
2014/07/14 PHP
Discuz7.2版的faq.php SQL注入漏洞分析
2014/08/06 PHP
PHP实现文件下载详解
2014/11/27 PHP
AJAX的使用方法详解
2017/04/29 PHP
stripos函数知识点实例分享
2019/02/11 PHP
深入探讨JavaScript String对象
2015/03/09 Javascript
jQuery实现文件上传进度条特效
2015/08/12 Javascript
jQuery判断元素是否显示 是否隐藏的简单实现代码
2016/05/19 Javascript
JS动态添加选项案例分析
2016/10/17 Javascript
Node.js 使用request模块下载文件的实例
2018/09/05 Javascript
基于vue v-for 多层循环嵌套获取行数的方法
2018/09/26 Javascript
vue+elementui 对话框取消 表单验证重置示例
2019/10/29 Javascript
vue表单中遍历表单操作按钮的显示隐藏示例
2019/10/30 Javascript
使用Vue实现简单计算器
2020/02/25 Javascript
原生JS实现烟花效果
2020/03/10 Javascript
vue-cli4.0多环境配置变量与模式详解
2020/12/30 Vue.js
如何在 Vue 表单中处理图片
2021/01/26 Vue.js
玩转python selenium鼠标键盘操作(ActionChains)
2020/04/12 Python
python使用sqlite3时游标使用方法
2018/03/13 Python
深入浅析Python传值与传址
2018/07/10 Python
Django中使用Celery的教程详解
2018/08/24 Python
Python3中configparser模块读写ini文件并解析配置的用法详解
2020/02/18 Python
使用Django清空数据库并重新生成
2020/04/03 Python
python神经网络编程实现手写数字识别
2020/05/27 Python
巴西最大的珠宝连锁店:Vivara
2019/04/18 全球购物
白俄罗斯大卖场:21vek.by
2019/07/25 全球购物
我们没有写servlet的构造方法,那么容器是怎么创建servlet的实例呢
2013/04/24 面试题
信息技术教学反思
2014/02/12 职场文书
科研课题实施方案
2014/03/18 职场文书
外语专业毕业生自荐信
2014/04/14 职场文书
商务日语专业自荐信
2014/04/17 职场文书
初中生毕业评语
2014/12/29 职场文书
2015年党风廉政建设目标责任书
2015/05/08 职场文书
2015年乡镇卫生院妇幼保健工作总结
2015/05/19 职场文书
小学生必读成语故事大全:送给暑假的你们
2019/07/09 职场文书
详解Spring Security中的HttpBasic登录验证模式
2022/03/17 Java/Android