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...)            # 返回两个或多个集合的并集,不更新原集合。
原文地址:https://www.cnblogs.com/Henry-ZHAO/p/12725334.html