集合的概念

1.Python语言提供的内置数据结构

2.与列表,字典一样属于可变类型的序列

3.集合是没有value的字典


集合的创建方式
1.直接花括号{}
print('---------字典的创建方式---------')
print('----1.{}----')
s = {'python' , 'world' , 652}
print(s)
2.使用内置函数set()
print('----2.内置函数set()-----')
s1 = set((range(6)))
print(s1)
print(set([3,4,56,7])) #列表->集合
print(set((652,654,777))) #元组->集合
print(set('python')) #字符串->集合
print(set({124,489,315}))
print(set())

集合的存储不是顺序存储的,按照hash表的方式存储

集合_集合的基本操作


3.空集合的创建方式

print('----空集合的创建----')
s = {}
print(s)
s1 = set()
print(s1)

s = {1 ,2 ,3 ,3 ,4 ,4 ,5}
print(s) #其中元素是不能重复的

集合_python_02


集合的相关操作
1.集合的判断操作

    in / not in

print('--------------------集合的相关操作--------------------')
print('----判断操作----')
s = { 'python' , 'java' , 652}
#in
print('python' in s) #python在s中,True
print('cplusplus' in s) #cplusplus不在s中,False
#not
print( 'php' not in s) #php不在s中,True
print('java' not in s) #java在s中,False

集合_集合的数学操作_03


2.集合的新增操作

调用add()方法,一次添加一个元素

调用update()方法,至少添加一个元素

print('----2.新增操作-----')
s = {'python'}
print(s)

s.add('java')
print(s)

s.update({ 2022,2018,2015 }) #增加集合中的元素
print(s)
s.update([2,3,4]) #将列表中的元素加进去
print(s)
s.update((100,200,300)) #将元组中的元素加进去
print(s)

集合_集合的数学操作_04


3.集合的删除操作

调用remove()方法,一次删除一个指定元素,如果指定元素不存在抛出KeyError

调用discard()方法,一次删除一个指定元素,如果指定元素不存在抛出异常

调用pop()方法,一次只删除一个任意元素

调用clear()方法,清空集合

print('----3.删除操作-----')
s = { 1,2,3,40,50,60,700,800,1000 }
print(s)

s.remove(1000)
print(s)

s.discard(700)
print(s)

s.pop() #不能指定参数,一般删除首元素
print(s)

s.clear()
print(s)

集合_python_05


集合间的关系
1.两个集合是否相等
!=   ==
print('----------------集合间的关系-----------------')
print('----是否相等-----')
s = {10,20,30,40}
s1 = {20,30,40,10}
print(s == s1)
print(s != s1)

集合_集合_06


2.一个集合是否是另一个集合的子集
issubset()

print('----子集----')
s = {1,2,3,4,7,8,9}
s1 = {1,2,4,7}
s2 = {3,5,7,8,9}
print(s1.issubset(s)) #s1 是 s 的子集
print(s2.issubset(s)) #s2 不是 s 的子集

集合_集合_07


3.一个集合是否是另一个集合的超集
issuperset()

print('----超集-----')
s = {1,2,3,4,7,8,9}
s1 = {1,2,4,7}
s2 = {3,5,7,8,9}
print(s.issuperset(s1))
print(s.issuperset(s2))

集合_集合的数学操作_08


4.两个集合没有超集
isdisjoint()
print('----没有交集----')
s = { 1,2,4,5}
s1 = {2,4,7}
s2 = {3,6,9}
print(s.isdisjoint(s1)) #没有交集为True
print(s.isdisjoint(s2)) #有交集为False

集合_集合间的关系_09


集合的数学操作(交集,并集,差集,对称差集)
print('-------------集合的数学操作----------')
s1 = { 10,20,30,40 }
s2 = { 20,30,40,50,60 }
#交集 两个集合共有的元素
print(s1.intersection(s2))
print(s1 & s2)
#并集 两个集合的元素加起来(其中重复的元素只要一个)
print(s1.union(s2))
print(s1 | s2)
#差集 其中一个集合减去共有的元素,剩下的就是差集
print(s1.difference(s2))
print(s1 - s2)
#对称差集 两个集合都减去共有的元素,剩下的是对称差集
print(s1.symmetric_difference((s2)))
print(s1 ^ s2)
集合_集合_10


集合生成式
print('---集合生成式----')
s = { i*i for i in range(5) }
#将{}改为[]就是列表生成式
print(s)
print(type(s))

集合_集合间的关系_11