集合类型有两种不同的类型——可变集合(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. 2014 Multi-University Training Contest 9#1009
  2. bootstrap按钮组
  3. Delphi中的函数指针判断是否为空
  4. c# mvc使用 npoi下载 excel
  5. 2014 Asia AnShan Regional Contest --- HDU 5073 Galaxy
  6. getattr的作用是什么呢
  7. 20150625_Andriod_01_ListView1_条目选中
  8. SharePoint自动化系列——Add content type to list.
  9. [原创]PostgreSQL Plus Advanced Server监控工具PEM(二)
  10. MFC最大化显示任务栏
  11. sizeWithFont 不是线程安全。
  12. 深入理解Binder(二),Binder是什么?
  13. Python:如何得到Popen的输出?
  14. ios 异步多线程 获取数据
  15. Error Correct System(模拟)
  16. ListView嵌套ListView时发生:View too large to fit into drawing cache的问题
  17. 面向对象程序设计-C++_课时13初始化列表
  18. C#删除字符串最后一个字符
  19. RocketMQ4.3.x 史上配置最全详解,没有之一
  20. 用Vue.js搭建一个小说阅读网站

热门文章

  1. 从零自学Hadoop(02):环境准备
  2. 从零自学Hadoop(14):Hive介绍及安装
  3. javax.crypto.BadPaddingException: Given final block not properly padded 解决方法
  4. native2ascii.exe 字符转码与反转码
  5. PostgreSQL-psql
  6. Python简单爬虫入门二
  7. jmeter接口自动化集成
  8. C# DESC加密
  9. hadoop io PART1
  10. 基于移动端Reactive Native轮播组件的应用与开发详解