龙空技术网

Python学习(九)集合的创建及常用操作详解

双鱼座的程序猿 146

前言:

现在我们对“python中集合定义”大约比较关注,大家都需要分析一些“python中集合定义”的相关文章。那么小编也在网络上收集了一些有关“python中集合定义””的相关文章,希望同学们能喜欢,你们快快来了解一下吧!

什么是集合?

集合是Python语言提供的内置数据结构;与列表、字典一样都属于可变类型的序列;集合是没有value的字典。
集合的创建方式
(1)直接使用 {} 创建集合,【注意:集合中的元素不允许重复且元素是无序的】。例如:  new_set = {2,2,3,100,5,6,7,100}  # 使用{}创建的集合 {2, 3, 100, 5, 6, 7} <class 'set'>  print('使用{}创建的集合',new_set,type(new_set)) (2)使用内置函数 set() 创建集合  new_set = set(range(6))  # 使用内置函数set()创建的集合 {0, 1, 2, 3, 4, 5} <class  'set'>  print('使用内置函数set()创建的集合',new_set,type(new_set))  # 将列表元素转换为集合 {1, 2, 4, 5, 6, 7, 8} <class 'set'>  new_set = set([1,2,2,2,4,5,6,7,7,8])  print('将列表元素转换为集合',new_set,type(new_set))  # 将元组元素转换为集合 {65, 1, 2, 4, 5, 3, 22} <class 'set'>  new_set = set((1,2,4,4,5,65,22,3))  print('将元组元素转换为集合',new_set,type(new_set))     # 将字符串序列转换为集合 {'y', 'h', 't', 'n', 'o', 'P'} <class 'set'>  new_set = set('Python')  print('将字符串序列转换为集合',new_set,type(new_set))  # 将{}创建的集合转换为内置函数set()集合 {2, 3, 100, 5, 7, 9} <class 'set'>  new_set = set({2,2,3,100,5,9,7,100})  print('将{}创建的集合转换为内置函数set()集合',new_set,type(new_set))  # 定义空集合  new_set = set()  print('使用内置函数set()定义空集合',new_set,type(new_set))
集合的相关操作
集合的判断操作:  in 或 not in     集合元素的新增操作:  调用 add() 方法,一次添加一个元素  调用 update() 方法,一次至少新增一个元素  
new_set = {10,22,34,65,99}new_set.add(101)print('使用add()方法新增集合元素',new_set,type(new_set))new_set.update({20,36,95})print('使用update()方法新增集合元素',new_set,type(new_set))new_set.update([15,28])print('使用update()方法新增(列表元素)到集合',new_set,type(new_set))
集合元素的删除操作:  调用remove()方法,一次删除一个指定元素。如果指定的元素不存在则抛出keyError  调用discard()方法,一次删除一个指定元素,如果指定元素不存在不抛出异常  调用pop()方法,一次只删除一个任意元素  调用clear()方法,清空集合
new_set.remove(101)print('指定删除一个集合中存在的元素',new_set,type(new_set))# new_set.remove(500)# print('指定删除一个集合中不存在的元素',new_set,type(new_set)) # KeyError: 500 抛出异常new_set.discard(500)print('指定删除一个集合中不存在的元素',new_set,type(new_set)) # 不抛出任何异常# new_set.pop(10) # TypeError: set.pop() takes no arguments (1 given) 不接受参数指定new_set.pop()print('删除集合中的一个任意元素',new_set,type(new_set))new_set.clear()print('清空集合中所有元素',new_set,type(new_set))
集合间的关系
1)判断两个集合是否相等  可以使用 == 或 != 进行判断2)判断一个集合是否是另一个集合的子集  a、调用方法 .issubset() 进行判断  b、集合B是集合A的子集3)一个集合是否是另一个集合的超集  a、调用方法.issuperset()进行判断  b、集合A是集合B的超集4)两个集合是否有交集  调用方法.isdisjoint()进行判断
s1 = {10,30,50,60}s2 = {60,50,30,10}# 判断两个集合是否相等(元素相同,就相等)print('结果为True,表明两个集合相等',s1==s2,'\n结果为False,表明两个集合相等',s1!=s2)# 判断一个集合是否是另一个集合的子集s1 = {10,30,50,60,80}s2 = {10,30,50,60}s3 = {10,30,90}s4 = {100,200,300}print('结果为True,表明比较的前者是后者的子集',s2.issubset(s1),'\n结果为False,表明比较的前者不是后者的子集',s3.issubset(s1))# 判断一个集合是否是另一个集合的超集print('结果为True,表明比较的前者是后者的超集',s1.issuperset(s2),'\n结果为False,表明比较的前者不是后者的超集',s1.issuperset(s3))# 判断两个集合是否有交集print('结果为True,表明两个集合没有交集',s1.isdisjoint(s4),'\n结果为False,表明两个集合有交集',s1.isdisjoint(s2))
集合的数学操作
获取两个集合间的交集元素:使用  .intersection() 方法或使用 &   s1 = {10,20,30,40}  s2 = {20,30,40,50,60}  print('获取两个集合间的交集',s1.intersection(s2),'\t或者',s1 & s2)获取两个集合间的并集元素:使用 .union() 方法或使用 |   print('获取两个集合间的并集',s1.union(s2),'\t或者',s1 | s2)获取两个集合间的差集元素:使用 .difference() 方法或使用 -  print('获取两个集合间的差集',s1.difference(s2),'\t或者',s1 - s2)获取两个集合间的对称差集元素:使用 .symmetric_difference() 方法或使用 ^  print('获取两个集合间的对称差集',s1.symmetric_difference(s2),'\t或者',s1 ^ s2)
集合的生成式
注意:将生成式中的 {} 改为 [] 就是列表生成式          没有元组生成式          # 列表生成式lst = [i*i for i in range(10)]print(lst) # [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]# 集合生成式 (元素是无序的)new_set = {i*i for i in range(10)}print(new_set) # {0, 1, 64, 4, 36, 9, 16, 49, 81, 25}

标签: #python中集合定义 #python中集合的用法