视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
Python中的集合类型知识讲解
2020-11-27 14:34:42 责编:小采
文档
 集合类型
数学上,,把set称做由不同的元素组成的集合,集合(set)的成员通常被称做集合元素(set elements)。Python把这个概念引入到它的集合类型对象里。集合对象是一组无序排列的可哈希的值,集合成员可以做字典中的键。数学集合转为Python的集合对象很有效,集合关系测试和union、intersection等操作符在Python里也同样如我们所预想地那样工作。
和其他容器类型一样,集合支持用in和not in操作符检查成员,由len()内建函数得到集合的基数(大小), 用 for 循环迭代集合的成员。但是因为集合本身是无序的,不可以为集合创建索引或执行切片(slice)操作,也没有键(keys)可用来获取集合中元素的值。
集合(sets)有两种不同的类型:可变集合(set)和不可变集合(frozenset)。对可变集合(set),可以添加和删除元素,对不可变集合(frozenset)则不允许这样做。注意:可变集合(set)不是可哈希的,因此既不能用做字典的键也不能做其他集合中的元素。不可变集合
(frozenset)则正好相反,即它们有哈希值,能被用做字典的键或是作为集合中的一个成员。
集合操作符和关系符号:

集合类型的实际操作:

(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(t) 
  

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

 >>> 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字典对集合类型的实际应用步骤。

下载本文
显示全文
专题