码迷,mamicode.com
首页 > 编程语言 > 详细

python set(集合)

时间:2018-01-11 11:35:00      阅读:191      评论:0      收藏:0      [点我收藏+]

标签:date()   define   add   als   error:   索引   python   indexing   key   

set和dict类似,也是一组key的集合,但不存储value。由于key不能重复,所以,在set中,没有重复的key。 集合是一个无序的,不重复的数据组合,它的主要作用如下: 去重,把一个列表变成集合,就自动去重了 关系测试,测试两组数据之前的交集、差集、并集等关系 集合(set):把不同的元素组成一起形成集合,是python基本的数据类型。 集合元素(set elements):组成集合的成员(不可重复) >>> li=[1,2,‘a‘,‘b‘] >>> s =set(li) >>> print(s) # {1, 2, ‘a‘, ‘b‘} >>> li2=[1,2,1,‘a‘,‘a‘] >>> s=set(li2) >>> print(s) #{1, 2, ‘a‘} 重复元素在set中自动被过滤: #注意,传入的参数[1, 2, 3]是一个list,而显示的{1, 2, 3}只是告诉你这个set内部有1,2,3这3个元素, 显示的顺序也不表示set是有序的。。 集合的相关操作   1、创建集合 由于集合没有自己的语法格式,只能通过集合的工厂方法set()和frozenset()创建 >>> s1 = set(‘alvin‘) >>> s2= frozenset(‘yuan‘) >>> print(s1,type(s1)) #{‘l‘, ‘v‘, ‘i‘, ‘a‘, ‘n‘} <class ‘set‘> >>> print(s2,type(s2)) #frozenset({‘n‘, ‘y‘, ‘a‘, ‘u‘}) <class ‘frozenset‘> 2、访问集合 由于集合本身是无序的,所以不能为集合创建索引或切片操作,只能循环遍历或使用in、not in来访问或判断集合元素。 >>> s1 = set(‘alvin‘) >>> print(‘a‘ in s1) #True >>> print(‘b‘ in s1) #False >>> #s1[1] #TypeError: ‘set‘ object does not support indexing >>> for i in s1: >>> print(i) #l i n v a 3、更新集合 可使用以下内建方法来更新: s.add() s.update() 注意只有可变集合才能更新: >>> #s1 = frozenset(‘alvin‘) >>> #print(s1) #frozenset({‘a‘, ‘n‘, ‘i‘, ‘v‘, ‘l‘}) >>> #s1.add("ccdc") #AttributeError: ‘frozenset‘ object has no attribute ‘add‘ >>> s2 = set(‘alvin‘) >>> s2.add(‘mm‘) >>> print(s2) # {‘mm‘, ‘l‘, ‘n‘, ‘a‘, ‘i‘, ‘v‘} >>> s2.update(‘HO‘) # 添加多个元素 >>> print(s2) # {‘mm‘, ‘l‘, ‘n‘, ‘a‘, ‘i‘, ‘H‘, ‘O‘, ‘v‘} 4、删除集合 s.remove() >>> s2 = set(‘alvin‘) >>> >>> print(s2) # { ‘l‘, ‘n‘, ‘a‘, ‘i‘, ‘v‘} >>> s2.remove(‘l‘) >>> print(s2) # {‘n‘, ‘a‘, ‘i‘, ‘v‘} >>> del s2 #删除集合本身  >>> print(s2) #NameError: name ‘s2‘ is not defined 四、集合类型操作符  1 in ,not in 2 集合等价与不等价(==, !=) 3 子集、超集 s=set(‘alvinyuan‘) s1=set(‘alvin‘) print(‘v‘ in s) print(s1<s) 4 联合(|) 联合(union)操作与集合的or操作其实等价的,联合符号有个等价的方法,union()。 s1=set(‘alvin‘) s2=set(‘yuan‘) s3=s1|s2 print(s3) #{‘a‘, ‘l‘, ‘i‘, ‘n‘, ‘y‘, ‘v‘, ‘u‘} print(s1.union(s2)) #{‘a‘, ‘l‘, ‘i‘, ‘n‘, ‘y‘, ‘v‘, ‘u‘}  5、交集(&) 与集合and等价,交集符号的等价方法是intersection() s1=set(‘alvin‘) s2=set(‘yuan‘) s3=s1&s2 print(s3) #{‘n‘, ‘a‘} print(s1.intersection(s2)) #{‘n‘, ‘a‘} 6、查集(-) 等价方法是difference() s1=set(‘alvin‘) s2=set(‘yuan‘) s3=s1-s2 print(s3) #{‘v‘, ‘i‘, ‘l‘} print(s1.difference(s2)) #{‘v‘, ‘i‘, ‘l‘}  7、对称差集(^) 对称差分是集合的XOR(‘异或’),取得的元素属于s1,s2但不同时属于s1和s2.其等价方法symmetric_difference() s1=set(‘alvin‘) s2=set(‘yuan‘) s3=s1^s2 print(s3) #{‘l‘, ‘v‘, ‘y‘, ‘u‘, ‘i‘} print(s1.symmetric_difference(s2)) #{‘l‘, ‘v‘, ‘y‘, ‘u‘, ‘i‘} 应用 ‘‘‘最简单的去重方式‘‘‘ lis = [1,2,3,4,1,2,3,4] print list(set(lis)) #[1, 2, 3, 4]

python set(集合)

标签:date()   define   add   als   error:   索引   python   indexing   key   

原文地址:http://blog.51cto.com/13562606/2059654

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!