代码改变世界

python 集合set

2013-06-24 22:01  youxin  阅读(906)  评论(0编辑  收藏  举报

集合set 是装有独特值的无序“袋子”。一个简单的集合可以包含任何数据类型的值。如果有两个集合,则可以执行像联合、交集以及集合求差等标准集合运算

创建集合: 创建空集合set()

>>> a_set = {1}     
>>> a_set
{1}
>>> type(a_set)     
<class 'set'>
>>> a_set = {1, 2}  
>>> a_set
{1, 2}
要创建只包含一个值的集合,仅需将该值放置于花括号之间。({})。
实际上,集合以  的形式实现,但目前还无须考虑这一点。
要创建多值集合,请将值用逗号分开,并用花括号将所有值包裹起来。

还可以 列表 为基础创建集合。

>>> a_list = ['a', 'b', 'mpilgrim', True, False, 42]
>>> a_set = set(a_list)                           
>>> a_set                                         
{'a', False, 'b', True, 'mpilgrim', 42}
>>> a_list                                        
['a', 'b', 'mpilgrim', True, False, 42]

① 要从列表创建集合,可使用 set() 函数。(懂得如何实现集合的学究可能指出这实际上并不是调用某个函数,而是对某个类进行实例化。我保证在本书稍后的地方将会学到其中的区别。目前而言,仅需知道 set() 行为与函数类似,以及它返回一个集合。)
② 正如我之前提到的,简单的集合可以包括任何数据类型的值。而且,如我之前所提到的,集合是 无序的。该集合并不记得用于创建它的列表中元素的最初顺序。如果向集合中添加元素,它也不会记得添加的顺序。
③ 初始的列表并不会发生变化。

如何更新集合用各种集合内建的方法和操作符添加和删除集合的成员:

>>> 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'])  

成员关系 (in, not in)

  1. >>> s = set('cheeseshop')  
  2. >>> t = frozenset('bookshop')  
  3. >>> 'k' in s  
  4. False  
  5. >>> 'k' in t  
  6. True  
  7. >>> 'c' not in t  
  8. True  

 

⑤集合等价/不等价

  1. >>> s == t  
  2. False  
  3. >>> s != t  
  4. True  
  5. >>> u = frozenset(s)  
  6. >>> s == u  
  7. True  
  8. >>> set('posh') == set('shop')  
  9. True  

 

⑥差补/相对补集( – )两个集合(s 和t)的差补或相对补集是指一个集合C,该集合中的元素,只属于集合s,而不属
于集合t。差符号有一个等价的方法,

  1. difference().  
  2. >>> s - t  
  3. set(['c', 'e'])  
  4.  

 

对称差分( ^ ):对称差分是集合的XOR以上文章就是Python字典对集合类型的实际应用步骤。

参考:http://developer.51cto.com/art/201003/188849.htm