集合定义和基本操作方法

 

#如果没有交集,返回True
s1 = {1,2}
s2 = {3,4}
print(s1.isdisjoint(s2))            #True

 

  

1、不同元素组成

2、无序

3、集合中元素必须是不可变类型,但是set集合是可变

4、集合内元素不能重复

 

用途:

  集合使用来进行关系元素,单独取集合的某一个元素是没有意义,也没有相应的方法 

 

  交集:s1 & s2,取两个集合的共同部分

  差集:s1 - s2,记过存于s1而不存在s2的元素集合

  补集:s1 ^ s2,扣掉s1与s2共同部分,剩下的部分合到一起

  并集:s1 | s2,把两个合到一起,去掉重复

 

添加元素,重复就不加入
s = {1,2,3,4,5,6}
s.add(3333)
print(s)            #{1, 2, 3, 4, 5, 6, 3333}

  

#随机删除一个
s = {1,2,3,4,5,6}
s.pop()
print(s)        #{2, 3, 4, 5, 6}

  

#指定删除一个
s = {1,2,3,4,5,6}
s.remove(1)
print(s)        #{2, 3, 4, 5, 6}

  

#指定删除一个,删除元素不存在不会报错  remove会报错
s = {1,2,3,4,5,6}
s.discard(2)
print(s)            #{1, 3, 4, 5, 6}

  

#关系运算
python_l=["alex","sss","dddd"]
linux_l=["sss","dddd"]

python_and_linux=[]
for i in python_l:
    if i in linux_l:
        python_and_linux.append(i)
print(python_and_linux)     #['sss', 'dddd']

  

求交集
python_l=["alex","sss","dddd"]
linux_l=["sss","dddd","ooo"]
p_s=set(python_l)
l_s=set(linux_l)
print(p_s.intersection(l_s))           # {'dddd', 'sss'}
print(p_s&l_s)              #{"dddd","sss"}
print(p_s,l_s) #{'alex', 'dddd', 'sss'} {'dddd', 'ooo', 'sss'}

 

  

求并集
python_l=["alex","sss","dddd"]
linux_l=["sss","dddd","ooo"]
p_s=set(python_l)
l_s=set(linux_l)
print(p_s.union(l_s))       #{'dddd', 'ooo', 'alex', 'sss'}
print(p_s|l_s)        #{"dddd","ooo","alex","sss"}

 

#求差集
python_l=["alex","sss","dddd"]
linux_l=["sss","dddd","ooo","rrrr"]
p_s=set(python_l)
l_s=set(linux_l)

print(p_s-l_s)          #{'alex'}
print(l_s-p_s)              #{'rrrr', 'ooo'}
print(p_s.difference(l_s))      #{'alex'}
print(l_s.difference(p_s))          #{'rrrr', 'ooo'}    

  

求交叉补集
python_l=["alex","sss","dddd"] linux_l=["sss","dddd","ooo","rrrr"] p_s=set(python_l) l_s=set(linux_l) print(p_s.symmetric_difference(l_s)) #{'ooo', 'rrrr', 'alex'} print(p_s^(l_s)) #{'ooo', 'rrrr', 'alex'}

 

python_l=["alex","sss","dddd"]
linux_l=["sss","dddd","ooo","rrrr"]
p_s=set(python_l)
l_s=set(linux_l)

print(p_s|l_s)          #   求并集   {'sss', 'alex', 'rrrr', 'dddd', 'ooo'}
print(p_s&l_s)          #   求交集    {'sss', 'dddd'}
print(p_s^l_s)          #   求交叉补集{'rrrr', 'alex', 'ooo'}
print(p_s-l_s)          #   求差集{'alex'}
p_s=p_s-l_s             #   求差集{'alex'}
print(p_s)              #   求差集{'alex'}

  

s1 = {1,2}
s2 = {1,2,3}
print(s1.issubset(s2))          #True   s1是s2的子集
print(s2.issubset(s1))          #False

  

s1 = {1,2}
s2 = {1,2,3}
print(s1.issubset(s2))          #True   s1是s2的子集
print(s2.issubset(s1))

print(s2.issuperset(s1))
s=frozenset(("sdikfj","aosidhjf"))
print(s)            #frozenset({'sdikfj', 'aosidhjf'})

  

#True s1是s2的父集

  

#更新多个值
s1 = {1,2}
s2 = {1,2,3}
s1.update([4,5,6])
print(s1)           #{1, 2, 4, 5, 6}

  

 

 

 

posted @ 2019-03-13 19:51  xyqd  阅读(24)  评论(0)    收藏  举报