集合类型有两种不同的类型——可变集合(set)和不可变集合(frozenset)

可变集合不是可哈希的,不能用作字典的键,也不能用做其他集合中的元素

不可变集合是有哈希值的,能被用做字典的键或者是作为集合中的一个成员

1.创建集合类型和给集合赋值

>>> 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'>
>>> len(s)
6
>>> len(t)
6
>>> s == t
False

2.访问集合中的值

>>> 'k' in s
False
>>> 'k' in t
True
>>> for i in s:
... print i
...
c
e
h
o
p
s

3.更新集合

>>> s.add('z')
>>> s
set(['c', 'e', 'h', 'o', 'p', 's', 'z'])
>>> s.update('abc')
>>> s
set(['a', 'c', 'b', 'e', 'h', 'o', 'p', 's', 'z'])
>>> s.remove('z')
>>> s
set(['a', 'c', 'b', 'e', 'h', 'o', 'p', 's'])
>>> s -= set('abc')
>>> s
set(['e', 'h', 'o', 'p', 's'])

  不可变集合不能修改

4.删除集合中的成员和集合

>>> del t

5.集合类型操作符

  <1>标准类型操作符

    1.成员关系(in,not in)

    2.集合等价/不等价(==,!=)

    3.子集/超集(<,<=,>,>=)

  <2>集合类型操作符

    1.联合(|)

>>> s|t
set(['b', 'e', 'h', 'k', 'o', 'p', 's'])

    2.交集(&)

>>> s&t
set(['h', 's', 'o', 'p'])

    3.差补/相对补集(-)

>>> s-t
set(['e'])

     4.对称差分(^),即(XOR)异或,只能是属于集合s或者集合t的成员,不能同时属于两个集合

>>> s^t
set(['b', 'e', 'k'])

     5.混合集合类型操作

      类型不相同的时候,产生的结果类型和左操作数的类型相同

  <3>集合类型操作符(仅适用于可变集合)

    1.update()方法或者|=

>>> s|=t
>>> s
set(['b', 'e', 'h', 'k', 'o', 'p', 's'])

     2.intersection_update()方法或者&=,保留两个集合重复的成员

>>> s
set(['a', 'c', 'b', 'd'])
>>> t
set(['e', 'd', 'f'])
>>> s&=t
>>> s
set(['d'])

    3.difference_update()方法或者-=

    4.symmetric_difference_update()方法或者^=,差分操作

6.内建函数

  <1>标准类型函数——len()

   <2>集合类型工厂函数——set()和frozenset()

7.集合类型内建方法——P184

最新文章

  1. 安装maven编译环境
  2. 无法打开键: UNKNOWN\Components\BE1FB738077DBE490AF18C3B9B1A1EE8\E5F5286B58B542741A00A0A9AA420B27
  3. Swift - 语言指南,来自github学习
  4. Dynamic CRM 2013学习笔记(四十)流程3 - 对话(Dialog)用法图解
  5. 使用WIF实现单点登录Part I——Windows Identity Foundation介绍及环境搭建
  6. 构建ASP.NET MVC5+EF6+EasyUI 1.4.3+Unity4.x注入的后台管理系统
  7. Java反序列化
  8. 浅谈Redis及其安装配置
  9. Linux驱动的两种加载方式过程分析
  10. java编程思想-异常
  11. cygwin编译SDL1.2
  12. python SyntaxError: Non-ASCII character &#39;\xd5&#39; in file
  13. .net生成Excel,并下载
  14. 3DES 加密 解密
  15. Scala-Spark digamma stackoverflow问题
  16. file_get_contents(&quot;php://input&quot;)的使用方法
  17. The Ethereum devp2p and discv4 protocol Part I
  18. Linux下定时备份文件
  19. aliyun添加数据盘后的物理分区和lvm逻辑卷两种挂载方式
  20. docker运行中的container怎么修改之前run时的env

热门文章

  1. SQLServer复制(二)--事务代理作业
  2. 【转】详细分析Java中断机制
  3. ARMGNU伪指令
  4. android 学习JSON
  5. js跨域那些事
  6. hdfs 通过NFSV3 加载至本地目录
  7. 枚举Enum使用
  8. python使用you-get模块下载视频
  9. intel和AMD CPU性能对比(2016年CPU天梯图)组装电脑必读!
  10. Nginx 日志中记录cookie