一、定义
集合是无序的对象集合,使用大括号{ }包围,元素之间用逗号分隔
集合是动态的,可以随时添加或删除元素
集合是异构的,可以包含不同类型的数据
集合中元素唯一
二、创建
- 通过大括号创建
- 通过构造方法set()创建
- 通过集合推导式创建
# 大括号创建
st1 = {1, "2", True}
print(st1) # 输出:{1, "2"} 因为元素唯一,1和True重复
# 构造方法set()创建
st2 = set()
print(st2) # 输出:set()
st2 = set("good") # 字符串、元组、列表、集合、字典等均可
print(st2) # 输出:{'d', 'o', 'g'}
# 集合推导式创建
st3 = {i for i in range(0,4)}
print(st3) # 输出:{0, 1, 2, 3}
# 注意:不要单独使用{}创建空集合
st4 = {}
print(st4) # 输出:{}
print(type(st4)) # 输出:<class 'dict'>
三、集合使用
成员检测
in:检查某个元素是否在集合中。如果在返回True,否则返回False。
not in:检查一个集合是否不包含某个元素。如果不在返回True,否则返回False。
st = {i for i in range(1,4)}
print(1 in st) # 输出:True
print(100 not in st) # 输出:True
四、常用方法
1、add()
将单个对象添加到集合中
写法:set.add(item)
入参:对象item
返回:None
st = {0, 1, 2, 3}
st.add(False)
st.add('good')
print(st.add(99)) # 输出:None
print(st) # 输出:{0, 1, 2, 3, 99, 'good'}
2、update()
将一个可迭代对象的所有元素,添加到集合
写法:set.update(iterable)
入参:可迭代对象iterable
返回:None
st = {1}
st.update(('a', 'b', 'c'))
print(st.update("good")) # 输出:None
print(st) # 输出:{1, 'a', 'b', 'o', 'c', 'd', 'g'}
3、remove()
从集合中移除指定元素item
写法:set.remove(item)
入参:指定元素item
返回:None
目标元素必须已存在,否则会报KeyError
st = {1, 2, 3}
print(st.remove(2)) # 输出:None
print(st) # 输出:{1, 3}
st.remove(99)
print(st) # KeyError: 99
4、discard()
从集合中移除指定元素item
写法:set.discard(item)
入参:指定元素item
返回:None
目标元素不存在也不会报错
st = {1, 2, 3}
print(st.discard(2)) # 输出:None
print(st) # 输出:{1, 3}
st.discard(99)
print(st) # 输出:{1, 3}
5、pop()
从集合中随机移除一个元素
写法:set.pop()
入参:无
返回:被移除的元素
如果集合为空,则引发KeyError错误
st = {1, 2}
st.pop()
print(st) # 输出:{2} 或者 {1}
print(st.pop()) # 输出:被移除的 2 或者 1
print(st) # 输出:set()
st.pop() # KeyError: 'pop from an empty set'
6、clear()
清空集合,移除所有元素
入参:无
返回:None
st = {1, 2, 3, 'a', 'b'}
print(st.clear()) # 输出:None
print(st) # 输出:set()
五、集合运算
1、交集运算
方法:intersection()
操作符:&
写法:set1.intersection(set2),set1 & set2
st1 = {1, 3, 2}
st2 = {5, 1, 4}
print(st1.intersection(st2)) # 输出:{1}
print(st1 & st2) # 输出:{1}
2、并集运算
方法:union()
操作符:|
写法:set1.union(set2),set1 | set2
st1 = {1, 3, 2}
st2 = {5, 1, 4}
print(st1.union(st2)) # 输出:{1, 2, 3, 4, 5}
print(st1 | st2) # 输出:{1, 2, 3, 4, 5}
3、差集运算
方法:difference()
操作符:-
写法:set1.difference(set2),set1 - set2
st1 = {1, 3, 2}
st2 = {5, 1, 4}
print(st1.difference(st2)) # 输出:{2, 3}
print(st1 - st2) # 输出:{2, 3}
六、集合推导式
集合推导式是指循环创建集合,类似列表推导式
写法:[x for x in … if …]
# for循环创建集合
st1 = set()
for i in 'hello world':
if i in 'good':
st1.add(i)
print(st1) # 输出:{'d', 'o'}
# 集合推导式创建集合
st2 = {i for i in 'hello world' if i in 'good'}
print(st2) # 输出:{'d', 'o'}