本文共 1738 字,大约阅读时间需要 5 分钟。
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'}>>> print(s2,type(s2)) #frozenset({ 'n', 'y', 'a', 'u'}) 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 a3、更新集合可使用以下内建方法来更新: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 in2 集合等价与不等价(==, !=)3 子集、超集s=set('alvinyuan')s1=set('alvin')print('v' in s)print(s1
转载地址:http://oeeel.baihongyu.com/