一、集合
- 由不同元素组成(去重的特性)
- 是无序的
- 集合中只能存放不可变类型的元素(数字、字符串、元组)
- 集合可增加、删除,但是不能修改
1、集合的定义
se = {1,2,3,4,5,"dongfei"}
print(se,type(se)) #{1, 2, 3, 4, 5, 'dongfei'} <class 'set'>
se = set("dongfei")
print(se,type(se)) #{'i', 'e', 'g', 'n', 'o', 'd', 'f'} <class 'set'>
se2 = set(["hello","hello","world"])
print(se2) #{'world', 'hello'}
2、集合的内置方法
se3 = {1,2,3,4,5,"dongfei"}
se3.add("hello")
print(se3) #{1, 2, 3, 4, 5, 'hello', 'dongfei'}
- clear() 清空
- copy() 浅拷贝
- pop() 随机删除一个元素
- remove() 指定删除一个元素,删除的元素不存在会报错
se4 = {1,2,3,4,5,"dongfei"}
se4.remove("dongfei")
print(se4) #{1, 2, 3, 4, 5}
- discard() 指定删除一个元素,删除的元素不存在不会报错
se5 = {1,2,3,4,5,"dongfei"}
se5.discard("nono")
print(se5) #{1, 2, 3, 4, 5, 'dongfei'}
- isdisjoint() 判断两个集合是否有交集,没有交集返回True
se5 = {"aa", "bb", "cc"}
se6 = {"dd", "ee"}
print(se5.isdisjoint(se6)) #True
- issubset() 判断是否是另一个集合的子集
- issuperset() 判断是否另一个集合的父集
se5 = {"aa", "bb", "cc"}
se6 = {"cc", "bb"}
print(se6.issubset(se5)) #True
print(se5.issuperset(se6)) #Ture
se5 = {"aa", "bb", "cc"}
se6 = {"cc", "bb", "dd", "ee"}
se5.update(se6)
print(se5) #{'bb', 'aa', 'cc', 'ee', 'dd'}
3、集合关系运算(交、差、并、补)
se5 = {"aa", "bb", "cc"}
se6 = {"cc", "dd", "ee"}
print(se5.intersection(se6)) #交集
print(se5&se6) #{'cc'}
se5 = {"aa", "bb", "cc"}
se6 = {"cc", "dd", "ee"}
print(se5.union(se6)) #并集
print(se5|se6) #{'aa', 'ee', 'dd', 'cc', 'bb'}
se5 = {"aa", "bb", "cc"}
se6 = {"cc", "dd", "ee"}
print(se5.difference(se6)) #差集
print(se5-se6) #{'aa', 'bb'}
print(se6.difference(se5)) #差集
print(se6-se5) #{'ee', 'dd'}
se5 = {"aa", "bb", "cc"}
se6 = {"cc", "dd", "ee"}
print(se5.symmetric_difference(se6)) #交叉补集
print(se5^se6) #{'bb', 'aa', 'dd', 'ee'}
se5 = {"aa", "bb", "cc"}
se6 = {"cc", "dd", "ee"}
se5.intersection_update(se6) #相当于se5 = se5&se6
print(se5) #{'cc'}
print(se6) #{'ee', 'cc', 'dd'}
4、不可变集合的定义
se = frozenset("hello")
print(se) #frozenset({'h', 'e', 'o', 'l'})