python之集合set

集合是无序的,无重复元素的序列。

创建方式:

  • set(value)   只能给一个参数value
  • {  }
  • set(tuple), set(list)  将元组和列表转成集合(附带升序效果)
 # 下面展示两个集合间的运算.

创建集合
a = set('abracadabra')    
b = set('alacazam')
A = set(('abracadabra'))   
a                                  
{'a', 'r', 'b', 'c', 'd'}
A
{'abracadabra'}

>>> a - b                              # 集合a中包含元素
{'r', 'd', 'b'}

>>> a | b                              # 集合a或b中包含的所有元素
{'a', 'c', 'r', 'd', 'b', 'm', 'z', 'l'}

>>> a & b                              # 集合a和b中都包含了的元素
{'a', 'c'}

>>> a ^ b                              # 不同时包含于a和b的元素
{'r', 'd', 'b', 'm', 'z', 'l'}

>>>a = {x for x in 'abracadabra' if x not in 'abc'}
>>> a
{'r', 'd'}

添加元素:

  • s.add( x )
  • s.update( x ) ,  x可以是列表,元组,字典等
s.update( "字符串" ) 与 s.update( {"字符串"} ) 含义不同:

 
thisset = set(("Google", "Runoob", "Taobao"))
print(thisset)
{'Google', 'Runoob', 'Taobao'}


#s.update( {"字符串"} )  ,将字符串添加到集合中,有重复的会忽略。
thisset.update({"Facebook"})     
print(thisset) 
{'Google', 'Runoob', 'Taobao', 'Facebook'}


#s.update( "字符串" )     将字符串拆分单个字符后,然后再一个个添加到集合中,有重复的会忽略。
thisset.update("Yahoo")
print(thisset)
{'h', 'o', 'Facebook', 'Google', 'Y', 'Runoob', 'Taobao', 'a'}   

 

删除元素

  • s.remove( x )      从集合中移除x; 如果元素不存在,会发生错误
  • s.discard( x )     移除集合中的元素; 且如果元素不存在,不会发生错误
  • s.pop()            删除排序后的集合的第一个元素,返回值为此元素。

 

其他方法:

  • s.copy()         拷贝一个集合  
  • x in s                         逻辑运算符
  • len(s) 元素个数
  • s.clear() 清空

 

  • set2.difference(set1)            返回两集合的差集  
  • set1.intersection(set2, set3 ... etc)      返回两个或多个集合中都包含的元素,即交集(返回的是集合),且set1没有更新
  • set1.intersection_update(set2, set3)        用set1,set2, set3的交集更新set1,无返回值
  • set1.symmetric_difference(set2)    返回一个新集合,去掉两集合交集后的并集。
  • set1.symmetric_difference_update(set2)     去掉两集合交集后的并集去更新set1

 

  • s.isdisjoint(set)                                  判断两个集合是否包含相同的元素,如果没有返回 True,否则返回 False
  • set1.issubset(set2)           set1是否为子集
  • set1.issuperset(set)           set1是否为父集
  • set.union(set1, set2...)             返回两个或多个集合的并集,不更新原集合。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值