目录
集合
- Python语言提供的内置数据结构
- 与列表、字典一样都属于可变类型的序列
- 相当于没有value的字典,元素不可重复,且其存储位置根据哈希函数计算,即 hash(iitem)=item
一、集合的创建
- 使用花括号{}
- 使用内置函数set()
'''使用{}创建集合'''
s={0,1,2,3,3,4,5,6,6,6}
print(s,type(s))
'''使用内置函数set()创建集合'''
s1=set(range(7))
print(s1,type(s1))
'''列表转换成集合'''
s2=set([0,1,2])
print(s2,type(s2))
'''元组转换成集合'''
s3=set((0,1,2))
print(s3,type(s3))
'''字符串序列转换成集合'''
s4=set('hello')
print(s4,type(s4))
运行结果
注意:集合元素无序
二、集合的相关操作
2.1 集合元素的判断
元素 in 集合名
元素 not in 集合名
2.2 集合元素的增加
- add():一次添加一个元素
- update():一次添加至少一个元素
s={1,2,3}
print(s)
s.add(10)
print(s)
s.update({20,30}) # 添加集合元素
print(s)
s.update([40,50]) # 添加列表元素
print(s)
s.update((60,70)) # 添加元组元素
print(s)
运行结果
2.3 集合元素的删除
- remove():一次删除一个指定元素,若指定元素不存在抛出KeyError
- discard():一次删除一个指定元素,若指定元素不存在不抛出异常
- pop():(无参数)一次随机删除一个元素
- clear():清空集合
s={1,2,3,4,5,6}
print(s)
s.remove(2)
print(s)
s.discard(1)
print(s)
s.discard(0)
print(s)
s.pop() # 随机删除一个元素
print(s)
s.clear()
print(s)
运行结果
三、集合间的关系
- 两个集合是否相等
- == 或 !=
- 一个集合是否是另一个集合的子集
- .issubset()
- 一个集合是否是另一个集合的超集
- .issuperset()
- 两个集合是否没有交集
- .isdisjoint()
四、集合的数据操作
-
交集
- .intersection()
- &
- 并集
- .union()
- |
- 差集
- .difference()
- -
- 对称差集
- .symmetric_difference()
- ^
s1={1,2,3,4,5,6}
s2={2,3,4,8,9}
print('集合A=',s1)
print('集合B=',s2)
print('A和B的交集:')
print(s1.intersection(s2))
print(s1 & s2)
print('A和B的并集:')
print(s1.union(s2))
print(s1 | s2)
print('A和B的差集:')
print(s1.difference(s2))
print(s1 - s2)
print('A和B的对称差集:')
print(s1.symmetric_difference(s2))
print(s1 ^ s2)
运行结果
五、集合生成式
{ 表示集合元素的表达式 for 自定义变量 in 可迭代对象 }
- 将 {} 修改为 [] 就是列表生成式
- 没有元组生成式
s={ i*i for i in range(1,10)}
print(s)
运行结果
Flag:我要成为一个日更选手:)