python基础之集合

一、python中集合的定义

由不同元素的集合,集合是一组无序排列的可Hash值,可以作为字典的key特性,集合中的元素是不可变类型。***注意三点(1.不同元素的集合,2.无序排列,3.集合中的元素是不可变类型)

二、集合的创建

s = set()
s = {1,2,3,4,5}

*注:创建空集合时,只能用set(),如果用第二种方法s={},创建的实际上是一个空字典。
s = {}
print(type(s))
<class 'dict'>

三、集合的功能

 

  • 基本功能

添加(add, update)

s={1,2,3,5,6}
s.add(4)              # 只能更新一个值,加的值不能重复
print(s)
s.update('4','7')   # 可更新多个值
print(s)
执行结果如下:
{1,2,3,4,5,6}
{1,2,3,5,6,'4','7'}

清空(clear)

s={1,2,3,5,6}
s.clear()
print(s)
执行结果如下:
set()

复制

s={1,2,3,5,6}
s1=s.copy()
print(s1)

执行结果如下:

s1={1,2,3,5,6}

 删除(pop, remove, discard)

s={4,10,5,7,8,4,9,2,5,‘s’}

s.pop() # 因为集合是无序的,所以随机删除的
print(s)

执行结果如下:

s={4, 5, 7, 8, 9, 10, 's'}

 

s.remove(7)  #删除指定元素3,元素不存在是报错

执行结果如下:

 s={4,10,5,8,4,9,2,5,‘s’}

s.discard('hello')  #元素不存在时不报错

  • 特有功能

交集(intersection 或' &')

p_s=['lcg','lzq','czd','cyz'] 
l_s=['cyz','zwx','wxj','czd']
print(p_s.intersection(l_s))  #求交集 
print(p_s & l_s)

执行结果如下:
{'cyz', 'czd'}
{'cyz', 'czd'}

并集(union  或 ' |')

p_s=['lcg','lzq','czd','cyz']
l_s=['cyz','zwx','wxj','czd']

print(p_s.union(l_s))    #求并集

print(p_s|l_s)

执行结果如下:

{'lzq', 'lcg', 'zwx', 'wxj', 'czd', 'cyz'}

{'lzq', 'lcg', 'zwx', 'wxj', 'czd', 'cyz'}

差集(difference 或  '-')

p_s=['lcg','lzq','czd','cyz']
l_s=['cyz','zwx','wxj','czd']

print('差集',p_s.difference(l_s))     # 求差集,p_s减去l_s

print('差集',p_s-l_s)

执行结果如下:

差集 {'lzq', 'lcg'}

差集 {'lzq', 'lcg'}

交叉补集(symmetric.difference 或 '^')

  p_s=['lcg','lzq','czd','cyz']
  l_s=['cyz','zwx','wxj','czd']
     

print(p_s.symmetric_difference(l_s))      #交叉补集

print('交叉补集',p_s^l_s)                        #两个集合合到一起减去他们的交集

执行结果如下:

{'zwx', 'wxj', 'lzq', 'lcg'}

交叉补集 {'zwx', 'wxj', 'lzq', 'lcg'}

判断是否为有效集(isdisjoint)

       s.isdisjoint:有交集为False,无交集为True    (其中s为集合)

子集和父集(issubset   和  issuperset)

       s1.issubset(s2):s2是s1的子集

       s2.issuperset(s1): s2是s1的父集

 

posted @ 2019-07-08 16:08  changzd123  阅读(224)  评论(0编辑  收藏  举报