python学习之集合

集合:由不同元素组成的集合

#不同元素组成,无序,集合中元素必须是不可变类型

s=set('hello')
print(s)                   ==》{'h', 'o', 'l', 'e'}
s=set(['alex','alex','sb'])
print(s)                  ==》{'alex', 'sb'}

s={1,2,3,4,5,6}

#1)添加add()

s.add('s')
print(s)              ==》{'s', 1, 2, 3, 4, 5, 6}

2)清空clear()

s.clear()
print(s)              ==>set()

3)复制copy()

s1=s.copy()

s={'sb',1,2,3,4,5,6}
#4)随机删pop()
# s.pop()

#5)指定删除remove()
# s.remove('sb')
# s.remove('hellol') #删除元素不存在会报错
# s.discard('sbbbb')#删除元素不存在不会报错
# print(s)

****************************************************

p =['lc','qw','we']
l =['lc','qw']
p_s=set(p)
l_s=set(l)
print(p_s,l_s) ==》{'we', 'lc', 'qw'} {'lc', 'qw'}

#求交集(intersection/&)
print(p_s.intersection(l_s)) ==》{'lc', 'qw'}
print(p_s&l_s) ==》{'lc', 'qw'}

# 求并集(union/|)
print(p_s.union(l_s)) ==>{'lc', 'qw', 'we'}
print(p_s|l_s) ==>{'lc', 'qw', 'we'}

#求差集(difference/-)

p =['lc','qw','we']
l =['lc','qw','er']
p_s=set(p)
l_s=set(l)

print(p_s.difference(l_s)) <==> print(p_s-l_s) ==> {'we'}
print(l_s.difference(p_s)) <==> print(l_s-p_s) ==> {'er'}

#求交叉补集(symmetric_difference/^)
p =['lc','qw','we']
l =['lc','qw','er']
p_s=set(p)
l_s=set(l)

print(p_s.symmetric_difference(l_s))
《==》print(p_s^l_s) ==》{'er', 'we'}

#求差集并更新(difference_update)

p =['lc','qw','we']
l =['lc','qw','er']
p_s=set(p)
l_s=set(l)

p_s.difference_update(l_s) 《==》 p_s=p_s-l_s
print(p_s)

==》{'we'}

#判断是否有交集isdisjoint(两个集合的交集为空,则返回True)
s1={1,2}
s2={4,3}
print(s1.isdisjoint(s2)) ==》True

#判断是否是子集(issubset),是则返回True
s1={1,2}
s2={1,2,3}
print(s1.issubset(s2)) #s1是s2的子集
==>True

#判断是否是父集(issuperset),是则返回True
s1={1,2}
s2={1,2,3}
print(s2.issuperset(s1)) ==》True

#使用自己和他人的联合更新集合(update)
s1={1,2,5}
s2={1,2,3}
s1.update(s2) #可更新多个值 (add更新一个值 ,union不更新)
print(s1) ==》{1, 2, 3, 5}

#集合是可变类型,定义不可变类型(frozenset)时这没有pop,remove等方法 执行会报错
s=frozenset('hello')
print(s) ==》 frozenset({'h', 'e', 'l', 'o'})

#可通过转换集合去重
如:names=['alex','alex','wupeiqi']
names=list(set(names))
print(names) ==》['wupeiqi', 'alex']

 

posted @ 2018-07-09 11:17  一只小妖  阅读(88)  评论(0)    收藏  举报