python之集合set
集合是无序的,无重复元素的序列。
创建方式:
set(value) #只能给一个参数value { } set(tuple), set(list) #将元组和列表转成集合(附带升序效果)
1 # 下面展示两个集合间的运算. 2 3 创建集合 4 a = set('abracadabra') 5 b = set('alacazam') 6 A = set(('abracadabra')) 7 a 8 {'a', 'r', 'b', 'c', 'd'} 9 A 10 {'abracadabra'} 11 12 >>> a - b # 集合a中包含元素 13 {'r', 'd', 'b'} 14 15 >>> a | b # 集合a或b中包含的所有元素 16 {'a', 'c', 'r', 'd', 'b', 'm', 'z', 'l'} 17 18 >>> a & b # 集合a和b中都包含了的元素 19 {'a', 'c'} 20 21 >>> a ^ b # 不同时包含于a和b的元素 22 {'r', 'd', 'b', 'm', 'z', 'l'} 23 24 >>>a = {x for x in 'abracadabra' if x not in 'abc'} 25 >>> a 26 {'r', 'd'}
添加元素:
1 s.add( x ) 2 s.update( x ) #x可以是列表,元组,字典等
s.update( "字符串" ) 与 s.update( {"字符串"} ) 含义不同:
1 thisset = set(("Google", "Runoob", "Taobao")) 2 print(thisset) 3 {'Google', 'Runoob', 'Taobao'} 4 5 6 #s.update( {"字符串"} ) ,将字符串添加到集合中,有重复的会忽略。 7 thisset.update({"Facebook"}) 8 print(thisset) 9 {'Google', 'Runoob', 'Taobao', 'Facebook'} 10 11 12 #s.update( "字符串" ) 将字符串拆分单个字符后,然后再一个个添加到集合中,有重复的会忽略。 13 thisset.update("Yahoo") 14 print(thisset) 15 {'h', 'o', 'Facebook', 'Google', 'Y', 'Runoob', 'Taobao', 'a'}
删除元素
1 s.remove( x ) #从集合中移除x; 如果元素不存在,会发生错误 2 s.discard( x ) #移除集合中的元素; 且如果元素不存在,不会发生错误 3 s.pop() #删除排序后的集合的第一个元素,返回值为此元素。
其他方法:
1 s.copy() #拷贝一个集合 2 x in s #逻辑运算符 3 len(s) #元素个数 4 s.clear() #清空 5 6 7 set2.difference(set1) #返回两集合的差集 8 set1.intersection(set2, set3 ... etc) #返回两个或多个集合中都包含的元素,即交集(返回的是集合),且set1没有更新。 9 set1.intersection_update(set2, set3) #用set1,set2, set3的交集更新set1,无返回值 10 set1.symmetric_difference(set2) #返回一个新集合,去掉两集合交集后的并集。 11 set1.symmetric_difference_update(set2) #去掉两集合交集后的并集去更新set1。 12 13 14 s.isdisjoint(set) # 判断两个集合是否包含相同的元素,如果没有返回 True,否则返回 False 15 set1.issubset(set2) #set1是否为子集 16 set1.issuperset(set) #set1是否为父集 17 set.union(set1, set2...) # 返回两个或多个集合的并集,不更新原集合。