ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
# 集合 Set `Set`和字典一样用`{ }`表示,不同的是其元素不是键值对,而是一个无序的不重复元素序列。 集合更接近数学上集合的概念,可以通过集合判断数据的从属关系,也可以通过集合把数据结构中重复的元素减掉。集合可做集合运算,可添加和删除元素。 ## 特点 * 元素无序且不重复 * 可做集合运算 ## 基础操作 ```python print('创建一个空集合必须用set()函数,因为如果直接用{}是用来创建一个空字典的:set():', set()) print('将一个字符串转为集合set(Str):', set('Tommy')) list = ['play', 'algorithm', 'python', 2019, 5.11, 'python'] # 集合中元素无序且不重复,python将只会留下一个 set1 = set(list) print('将一个列表转为集合 set(list):', set1) # 判断元素是否在集合内 print("python是否在集合内 'python' in set1:", 'python' in set1) # 迭代 print('迭代set :') for item in set1: print(item) # 集合运算 set2 = {1, 2, 3, 4, 5, 6} set3 = {1, 2, 7, 8} print('减法,set2中包含但set3中不包含的元素 set2 - set3:', set2 - set3) print('按位或运算,set2和set3中包含的所有元素 set2 | set3:', set2 | set3) print('按位与运算,set2和set3中都包含的元素 set2 & set3:', set2 & set3) print('按位异或运算,set2和set3中不同时包含的元素 set2 ^ set3:', set2 ^ set3) ``` **输出结果** ``` 创建一个空集合必须用set()函数,因为如果直接用{}是用来创建一个空字典的:set(): set() 将一个字符串转为集合: {'y', 'o', 'T', 'm'} 将一个列表转为集合: {'algorithm', 2019, 5.11, 'python', 'play'} python是否在集合内 'python' in set1: True 迭代set : algorithm 2019 5.11 python play 减法,set2中包含但set3中不包含的元素 set2 - set3: {3, 4, 5, 6} 按位或运算,set2和set3中包含的所有元素 set2 | set3: {1, 2, 3, 4, 5, 6, 7, 8} 按位与运算,set2和set3中都包含的元素 set2 & set3: {1, 2} 按位异或运算,set2和set3中不同时包含的元素 set2 ^ set3: {3, 4, 5, 6, 7, 8} ``` ## 基础函数 ```Python set1 = {1, 2, 3, 4, 5, 6} print('set的长度 len(set):', len(set1)) ``` **输出结果** ``` set的长度 len(set): 6 ``` ## 基础方法 ```Python set1 = {1, 2, 3, 4, 5, 6} set2 = {4, 5, 6, 7, 8, 9} set1.add(0) print('添加元素 set1.add(0)', set1) # 计算差集,效果同 - print('返回两个集合的差集 set1.difference(set2)', set1.difference(set2)) print('返回两个集合的差集 set2.difference(set1)', set2.difference(set1)) set1 = {1, 2, 3, 4, 5, 6} set2 = {4, 5, 6, 7, 8, 9} # 移除两个集合中都存在的元素 set1.difference_update(set2) print('移除set1中set1和set2都存在的元素 set1.difference_update(set2)', set1) set1 = {1, 2, 3, 4, 5, 6} set2 = {4, 5, 6, 7, 8, 9} set2.difference_update(set1) print('移除set2中set1和set2都存在的元素 set2.difference_update(set1)', set2) # 移除元素 set1 = {1, 2, 3, 4, 5, 6} set2 = {4, 5, 6, 7, 8, 9} # 移除指定元素 set1.discard(10) print("移除的元素不存在时不报错 set1.discard(10):", set1) set1.remove(6) print("移除的元素不存在时报错 set1.remove(6):", set1) # 随机移除元素 set1.pop() print('随机移除元素后的set1 set1.pop():', set1) set1 = {1, 2, 3, 4, 5, 6} set2 = {4, 5, 6, 7, 8, 9} set3 = {5, 6, 10} set4 = {5, 6, 7, 8, 9} print('返回多个集合的交集,set1不变 set1.intersection(set2,set3,set4):', set1.intersection(set2,set3,set4), set1) set1.intersection_update(set2,set3,set4) print('set1变为set1与其他集合的交集 set1.intersection_update(set2,set3,set4):', set1) set1 = {1, 2, 3, 4, 5, 6} set2 = {4, 5, 6} print('判断两个集合是否包含相同元素,如果包含返回False set2.isdisjoint(set1):', set2.isdisjoint(set1)) # 子集判断 print('判断set1是否是set2的子集 set1.issubset(set2):', set1.issubset(set2)) print('判断set2是否是set1的子集 set2.issubset(set1):', set2.issubset(set1)) # 父集判断 print('判断set1是否是set2的父集 set1.issuperset(set2):', set1.issuperset(set2)) print('判断set2是否是set1的父集 set2.issuperset(set1):', set2.issuperset(set1)) set1 = {1, 2, 3, 4, 5, 6} set2 = {4, 5, 6, 9} print("异或运算 set1.symmetric_difference(set2):", set1.symmetric_difference(set2)) set1.symmetric_difference_update(set2) print("异或运算后将相同部分移除,不同部分添加到set1中 set1.symmetric_difference_update(set2):", set1) set1 = {1, 2, 3, 4, 5, 6} set2 = {4, 5, 6, 7, 8, 9} set3 = {5, 6, 10} print('计算集合的合集 set1.union(set2, set3):', set1.union(set2, set3)) set1 = {1, 2, 3, 4, 5, 6} set2 = {5, 6, 10} set1.update(set2) print('将set2中的元素添加到set1中 set1.update(set2):', set1) print('set.clear() 和 set.copy()用法同列表') ``` **输出结果** ``` 添加元素 set1.add(0) {0, 1, 2, 3, 4, 5, 6} 返回两个集合的差集 set1.difference(set2) {0, 1, 2, 3} 返回两个集合的差集 set2.difference(set1) {8, 9, 7} 移除set1中set1和set2都存在的元素 set1.difference_update(set2) {1, 2, 3} 移除set2中set1和set2都存在的元素 set2.difference_update(set1) {7, 8, 9} 移除的元素不存在时不报错 set1.discard(10): {1, 2, 3, 4, 5, 6} 移除的元素不存在时报错 set1.remove(6): {1, 2, 3, 4, 5} 随机移除元素后的set1 set1.pop(): {2, 3, 4, 5} 返回多个集合的交集,set1不变 set1.intersection(set2,set3,set4): {5, 6} {1, 2, 3, 4, 5, 6} set1变为set1与其他集合的交集 set1.intersection_update(set2,set3,set4): {5, 6} 判断两个集合是否包含相同元素,如果包含返回False set2.isdisjoint(set1): False 判断set1是否是set2的子集 set1.issubset(set2): False 判断set2是否是set1的子集 set2.issubset(set1): True 判断set1是否是set2的父集 set1.issuperset(set2): True 判断set2是否是set1的父集 set2.issuperset(set1): False 异或运算 set1.symmetric_difference(set2): {1, 2, 3, 9} 异或运算后将相同部分移除,不同部分添加到set1中 set1.symmetric_difference_update(set2): {1, 2, 3, 9} 计算集合的合集 set1.union(set2, set3): {1, 2, 3, 4, 5, 6, 7, 8, 9, 10} 将set2中的元素添加到set1中 set1.update(set2): {1, 2, 3, 4, 5, 6, 10} set.clear() 和 set.copy()用法同列表 ``` # 代码库地址 [https://github.com/liuzhen153/play-algorithm-python](https://github.com/liuzhen153/play-algorithm-python)