首页 最新 热门 推荐

  • 首页
  • 最新
  • 热门
  • 推荐

Python筑基之旅-集合

  • 25-03-03 04:22
  • 4183
  • 9158
blog.csdn.net

目录

 一、集合

1、集合的定义

2、集合的语法

3、获取集合的属性和方法

4、获取集合的帮助信息

5、集合的用法

5-1、创建集合

5-1-1、创建空集合(必须使用set()函数)

5-1-2、使用花括号创建集合(包含元素)

5-1-3、使用set()函数创建集合(包含元素)

5-1-4、尝试使用花括号创建空集合(会被解释为空字典)

5-2、集合的操作

5-2-1、添加元素

5-2-2、删除元素

5-2-3、检查元素是否存在

5-2-4、交集

5-2-5、并集

5-2-6、差集

5-2-7、对称差集

5-2-8、更新集合

5-3、集合的用法

5-3-1、add()方法

5-3-2、clear()方法

5-3-3、copy()方法

5-3-4、difference()方法

5-3-5、difference_update()方法

5-3-6、discard()方法

5-3-7、intersection()方法

5-3-8、intersection_update()方法

5-3-9、isdisjoint()方法

5-3-10、issubset()方法

5-3-11、issuperset()方法

5-3-12、pop()函数

5-3-13、remove()方法

5-3-14、symmetric_difference()方法

5-3-15、symmetric_difference_update()方法

5-3-16、union()方法

5-3-17、update()方法

二、推荐阅读

1、Python-VBA函数之旅-set()函数

2、Python算法之旅

3、Python函数之旅

4、个人主页-神奇夜光杯-CSDN

 一、集合

1、集合的定义

        在Python中,集合(set)是一种无序且不包含重复元素的数据类型。集合是可变的,但它是无序的,所以不支持索引或切片操作,你可以使用集合来执行成员检测、消除重复元素等操作。

2、集合的语法

        你可以使用花括号{}或set()函数来创建集合,但是,如果你使用花括号{}并且没有包含任何元素,Python会将其解释为一个空字典,而不是一个空集合,因此,在创建空集合时,你应该使用set()函数。

3、获取集合的属性和方法

        用dir()函数获取set所有属性和方法的列表

  1. print(dir(set))
  2. # ['__and__', '__class__', '__class_getitem__', '__contains__', '__delattr__', '__dir__', '__doc__', '__eq__',
  3. # '__format__', '__ge__', '__getattribute__', '__getstate__', '__gt__', '__hash__', '__iand__', '__init__',
  4. # '__init_subclass__', '__ior__', '__isub__', '__iter__', '__ixor__', '__le__', '__len__', '__lt__', '__ne__',
  5. # '__new__', '__or__', '__rand__', '__reduce__', '__reduce_ex__', '__repr__', '__ror__', '__rsub__', '__rxor__',
  6. # '__setattr__', '__sizeof__', '__str__', '__sub__', '__subclasshook__', '__xor__', 'add', 'clear', 'copy',
  7. # 'difference', 'difference_update', 'discard', 'intersection', 'intersection_update', 'isdisjoint', 'issubset',
  8. # 'issuperset', 'pop', 'remove', 'symmetric_difference', 'symmetric_difference_update', 'union', 'update']

4、获取集合的帮助信息

        用help()函数获取set的帮助信息

  1. help(set)
  2. # Help on class set in module builtins:
  3. #
  4. # class set(object)
  5. # | set() -> new empty set object
  6. # | set(iterable) -> new set object
  7. # |
  8. # | Build an unordered collection of unique elements.
  9. # |
  10. # | Methods defined here:
  11. # |
  12. # | __and__(self, value, /)
  13. # | Return self&value.
  14. # |
  15. # | __contains__(...)
  16. # | x.__contains__(y) <==> y in x.
  17. # |
  18. # | __eq__(self, value, /)
  19. # | Return self==value.
  20. # |
  21. # | __ge__(self, value, /)
  22. # | Return self>=value.
  23. # |
  24. # | __getattribute__(self, name, /)
  25. # | Return getattr(self, name).
  26. # |
  27. # | __gt__(self, value, /)
  28. # | Return self>value.
  29. # |
  30. # | __iand__(self, value, /)
  31. # | Return self&=value.
  32. # |
  33. # | __init__(self, /, *args, **kwargs)
  34. # | Initialize self. See help(type(self)) for accurate signature.
  35. # |
  36. # | __ior__(self, value, /)
  37. # | Return self|=value.
  38. # |
  39. # | __isub__(self, value, /)
  40. # | Return self-=value.
  41. # |
  42. # | __iter__(self, /)
  43. # | Implement iter(self).
  44. # |
  45. # | __ixor__(self, value, /)
  46. # | Return self^=value.
  47. # |
  48. # | __le__(self, value, /)
  49. # | Return self<=value.
  50. # |
  51. # | __len__(self, /)
  52. # | Return len(self).
  53. # |
  54. # | __lt__(self, value, /)
  55. # | Return self
  56. # |
  57. # | __ne__(self, value, /)
  58. # | Return self!=value.
  59. # |
  60. # | __or__(self, value, /)
  61. # | Return self|value.
  62. # |
  63. # | __rand__(self, value, /)
  64. # | Return value&self.
  65. # |
  66. # | __reduce__(...)
  67. # | Return state information for pickling.
  68. # |
  69. # | __repr__(self, /)
  70. # | Return repr(self).
  71. # |
  72. # | __ror__(self, value, /)
  73. # | Return value|self.
  74. # |
  75. # | __rsub__(self, value, /)
  76. # | Return value-self.
  77. # |
  78. # | __rxor__(self, value, /)
  79. # | Return value^self.
  80. # |
  81. # | __sizeof__(...)
  82. # | S.__sizeof__() -> size of S in memory, in bytes
  83. # |
  84. # | __sub__(self, value, /)
  85. # | Return self-value.
  86. # |
  87. # | __xor__(self, value, /)
  88. # | Return self^value.
  89. # |
  90. # | add(...)
  91. # | Add an element to a set.
  92. # |
  93. # | This has no effect if the element is already present.
  94. # |
  95. # | clear(...)
  96. # | Remove all elements from this set.
  97. # |
  98. # | copy(...)
  99. # | Return a shallow copy of a set.
  100. # |
  101. # | difference(...)
  102. # | Return the difference of two or more sets as a new set.
  103. # |
  104. # | (i.e. all elements that are in this set but not the others.)
  105. # |
  106. # | difference_update(...)
  107. # | Remove all elements of another set from this set.
  108. # |
  109. # | discard(...)
  110. # | Remove an element from a set if it is a member.
  111. # |
  112. # | Unlike set.remove(), the discard() method does not raise
  113. # | an exception when an element is missing from the set.
  114. # |
  115. # | intersection(...)
  116. # | Return the intersection of two sets as a new set.
  117. # |
  118. # | (i.e. all elements that are in both sets.)
  119. # |
  120. # | intersection_update(...)
  121. # | Update a set with the intersection of itself and another.
  122. # |
  123. # | isdisjoint(...)
  124. # | Return True if two sets have a null intersection.
  125. # |
  126. # | issubset(self, other, /)
  127. # | Test whether every element in the set is in other.
  128. # |
  129. # | issuperset(self, other, /)
  130. # | Test whether every element in other is in the set.
  131. # |
  132. # | pop(...)
  133. # | Remove and return an arbitrary set element.
  134. # | Raises KeyError if the set is empty.
  135. # |
  136. # | remove(...)
  137. # | Remove an element from a set; it must be a member.
  138. # |
  139. # | If the element is not a member, raise a KeyError.
  140. # |
  141. # | symmetric_difference(...)
  142. # | Return the symmetric difference of two sets as a new set.
  143. # |
  144. # | (i.e. all elements that are in exactly one of the sets.)
  145. # |
  146. # | symmetric_difference_update(...)
  147. # | Update a set with the symmetric difference of itself and another.
  148. # |
  149. # | union(...)
  150. # | Return the union of sets as a new set.
  151. # |
  152. # | (i.e. all elements that are in either set.)
  153. # |
  154. # | update(...)
  155. # | Update a set with the union of itself and others.
  156. # |
  157. # | ----------------------------------------------------------------------
  158. # | Class methods defined here:
  159. # |
  160. # | __class_getitem__(...) from builtins.type
  161. # | See PEP 585
  162. # |
  163. # | ----------------------------------------------------------------------
  164. # | Static methods defined here:
  165. # |
  166. # | __new__(*args, **kwargs) from builtins.type
  167. # | Create and return a new object. See help(type) for accurate signature.
  168. # |
  169. # | ----------------------------------------------------------------------
  170. # | Data and other attributes defined here:
  171. # |
  172. # | __hash__ = None

5、集合的用法

5-1、创建集合
5-1-1、创建空集合(必须使用set()函数)
  1. # 创建空集合(须使用set()函数)
  2. empty_set = set()
  3. print(type(empty_set)) # 输出:
5-1-2、使用花括号创建集合(包含元素)
  1. # 使用花括号创建集合(包含元素)
  2. my_set = {1, 2, 3, 4}
  3. print(type(my_set)) # 输出:
5-1-3、使用set()函数创建集合(包含元素)
  1. # 使用set()函数创建集合(包含元素)
  2. another_set = set([1, 2, 3, 4])
  3. print(type(another_set)) # 输出:
5-1-4、尝试使用花括号创建空集合(会被解释为空字典)
  1. # 尝试使用花括号创建空集合(会被解释为空字典)
  2. wrong_empty_set = {} # 这将是一个空字典,而不是空集合
  3. print(type(wrong_empty_set)) # 输出:
5-2、集合的操作
5-2-1、添加元素
  1. # 添加元素
  2. my_set = {3, 5, 6, 8, 10, 11, 24}
  3. my_set.add(7)
  4. print(my_set) # 输出:{3, 5, 6, 7, 8, 24, 10, 11}
5-2-2、删除元素
  1. # 删除元素
  2. my_set = {3, 5, 6, 8, 10, 11, 24}
  3. # my_set.remove(9) # 如果元素不存在,会抛出KeyError,可以使用discard()代替
  4. my_set.remove(5)
  5. print(my_set) # 输出:{3, 6, 8, 24, 10, 11}
5-2-3、检查元素是否存在
  1. # 检查元素是否存在
  2. my_set = {3, 5, 6, 8, 10, 11, 24}
  3. if 6 in my_set:
  4. print("6 is in the set") # 输出:6 is in the set
5-2-4、交集
  1. # 交集
  2. my_set = {3, 5, 6, 8, 10, 11, 24}
  3. another_set = {7, 8, 12}
  4. intersection = my_set & another_set
  5. print(intersection) # 输出:{8}
5-2-5、并集
  1. # 并集
  2. my_set = {3, 5, 6, 8, 10, 11, 24}
  3. another_set = {7, 8, 12}
  4. union = my_set | another_set
  5. print(union) # 输出:{3, 5, 6, 7, 8, 10, 11, 12, 24}
5-2-6、差集
  1. # 差集(my_set中有的但another_set中没有的)
  2. my_set = {3, 5, 6, 8, 10, 11, 24}
  3. another_set = {7, 8, 12}
  4. difference = my_set - another_set
  5. print(difference) # 输出:{3, 5, 6, 10, 11, 24}
5-2-7、对称差集
  1. # 对称差集(在my_set或another_set中,但不同时在两个中的元素)
  2. my_set = {3, 5, 6, 8, 10, 11, 24}
  3. another_set = {7, 8, 12}
  4. symmetric_difference = my_set ^ another_set
  5. print(symmetric_difference) # 输出:{3, 5, 6, 7, 10, 11, 12, 24}
5-2-8、更新集合
  1. # 更新集合,添加another_set中的所有元素,但不包括已经在my_set中的元素
  2. my_set = {3, 5, 6, 8, 10, 11, 24}
  3. another_set = {7, 8, 12}
  4. my_set.update(another_set)
  5. print(my_set) # 输出:{3, 5, 6, 7, 8, 10, 11, 12, 24}
5-3、集合的用法
5-3-1、add()方法
  1. # 1、方法:set_name.add
  2. # 2、语法:set_name.add(element)
  3. # 3、参数:
  4. # 3-1、set_name:表示set对象的名称
  5. # 3-2、element:表示你想要添加到集合中的元素
  6. # 4、功能:用于向集合中添加一个元素
  7. # 5、返回值:一个新的集合
  8. # 6、说明:
  9. # 6-1、由于set是无序的,所以打印集合时元素的顺序可能会不同,但是,集合的内容(即包含的元素)将保持不变
  10. # 6-2、如果你尝试将一个集合(或其他可迭代对象)中的所有元素添加到另一个集合中,可以使用update()方法,而不是多次调用add()方法
  11. # 7、示例:
  12. # 创建一个空的set
  13. my_set = set()
  14. # 使用add()方法添加元素
  15. my_set.add(1)
  16. my_set.add(2)
  17. my_set.add(3)
  18. # 打印集合
  19. print(my_set) # 输出:{1, 2, 3}或{3, 2, 1},因为set是无序的
  20. # 尝试添加已存在的元素,这不会有任何效果(因为set不包含重复元素)
  21. my_set.add(2)
  22. print(my_set) # 输出:{1, 2, 3}或{3, 2, 1},因为set是无序的
5-3-2、clear()方法
  1. # 1、方法:set_name.clear
  2. # 2、语法:set_name.clear()
  3. # 3、参数:
  4. # 3-1、set_name:表示set对象的名称
  5. # 4、功能:用于移除集合中的所有元素,将其变为一个空集合
  6. # 5、返回值:一个空集合
  7. # 6、说明:
  8. # 6-1、clear()方法会直接修改原集合,而不是返回一个新的集合;如果你需要保留原始集合并创建一个新的空集合,你应该使用set()构造函数来创建一个新的空集合
  9. # 7、示例:
  10. # 创建一个包含几个元素的set
  11. my_set = {1, 2, 3, 4, 5}
  12. # 打印原始集合
  13. print(my_set) # 输出:可能是{1, 2, 3, 4, 5}或类似(因为set是无序的)
  14. # 使用clear()方法清空集合
  15. my_set.clear()
  16. # 打印清空后的集合
  17. print(my_set) # 输出:set(),集合已变为空集合
  18. # 再次尝试打印集合元素(可选,以确认集合为空)
  19. for element in my_set:
  20. print(element) # 由于集合为空,这一行不会被执行
5-3-3、copy()方法
  1. # 1、方法:original_set.copy
  2. # 2、语法:new_set = original_set.copy()
  3. # 3、参数:
  4. # 3-1、original_set:表示你想要复制的原始set对象的名称
  5. # 3-2、new_set:一个新的set对象,它包含original_set的元素
  6. # 4、功能:用于创建一个集合的浅拷贝(shallow copy)
  7. # 5、返回值:浅拷贝会创建一个新的集合对象,并复制原集合中所有的元素
  8. # 6、说明:
  9. # 6-1、浅拷贝创建的新集合对象,与原集合属于不同的对象,它们仅仅只是包含的元素完全相同,鉴于集合的无序性,打印时的顺序不一定相同
  10. # 7、示例:
  11. # 创建一个包含几个元素的set
  12. original_set = {1, 2, 3, 4, 5}
  13. # 使用copy()方法创建一个新的集合
  14. new_set = original_set.copy()
  15. # 打印原始集合
  16. print("Original set:", original_set) # 输出:Original set: {1, 2, 3, 4, 5}
  17. # 打印新集合
  18. print("New set:", new_set) # 输出:New set: {1, 2, 3, 4, 5}
  19. # 修改原始集合
  20. original_set.add(6)
  21. # 再次打印两个集合
  22. print("Modified original set:", original_set) # 输出:Modified original set: {1, 2, 3, 4, 5, 6}
  23. print("New set(unchanged):", new_set) # 输出:New set(unchanged): {1, 2, 3, 4, 5}
  24. # 创建深拷贝(如果需要)
  25. # 如果你需要创建一个真正的“深拷贝”(即,拷贝所有的层次),你可以使用copy模块中的deepcopy()函数
  26. import copy
  27. # 创建一个集合
  28. original_set = {1, 2, 3, 4, 5}
  29. # 使用deepcopy()方法创建深拷贝
  30. deep_copied_set = copy.deepcopy(original_set)
  31. # 修改深拷贝集合
  32. deep_copied_set.add(8)
  33. # 打印原集合和深拷贝后的集合
  34. print("原集合:", original_set) # 输出:原集合: {1, 2, 3, 4, 5} 原集合中的元素并未新增,因为deepcopy()创建了原集合中所有层次的完全独立的副本
  35. print("深拷贝后的集合:", deep_copied_set) # 输出:深拷贝后的集合: {1, 2, 3, 4, 5, 8}
5-3-4、difference()方法
  1. # 1、方法:set1.difference
  2. # 2、语法:
  3. # 2-1、set1.difference(set2)
  4. # 2-2、set1 - set2
  5. # 3、参数:
  6. # 3-1、set1(必须):表示一个做为参考基准的目标集合
  7. # 3-2、set2(必须):表示一个与目标集合做对比的集合
  8. # 4、功能:用于计算两个集合之间的差集的方法
  9. # 5、返回值:返回一个新的集合,该集合包含所有在set1中但不在set2中的元素
  10. # 6、说明:
  11. # 7、示例:
  12. # 创建两个集合
  13. set1 = {1, 2, 3, 4, 5}
  14. set2 = {4, 5, 6, 7, 8}
  15. # 使用difference()方法
  16. difference_set = set1.difference(set2)
  17. print(difference_set) # 输出: {1, 2, 3}
  18. # 使用-运算符
  19. difference_set_operator = set1 - set2
  20. print(difference_set_operator) # 输出: {1, 2, 3}
5-3-5、difference_update()方法
  1. # 1、方法:set.difference_update
  2. # 2、语法:set.difference_update(other_set)
  3. # 3、参数:
  4. # 3-1、set(必须):表示一个做为参考基准的目标集合
  5. # 3-2、other_set(可选):表示与目标集合做对比的其他集合,可以是空集合
  6. # 4、功能:用于从集合中移除那些在另一个集合中存在的元素
  7. # 5、返回值:直接修改后的原集合
  8. # 6、说明:
  9. # 6-1、与difference()方法不同,difference_update()会直接修改原集合,而不是返回一个新的集合
  10. # 7、示例:
  11. # 创建三个集合
  12. set1 = {1, 2, 3, 4, 5}
  13. set2 = {4, 5, 6, 7, 8}
  14. set3 = set()
  15. # 使用difference_update()方法
  16. set1.difference_update(set2)
  17. print(set1) # 输出: {1, 2, 3},set1被修改了
  18. # 注意到set2没有改变
  19. print(set2) # 输出: {4, 5, 6, 7, 8}
  20. # other_set不设定集合对象
  21. set2.difference_update()
  22. print(set2) # 输出: {4, 5, 6, 7, 8}
  23. # other_set设定为空集合
  24. set2.difference_update(set3)
  25. print(set2) # 输出: {4, 5, 6, 7, 8}
5-3-6、discard()方法
  1. # 1、方法:set.discard
  2. # 2、语法:set.discard(element)
  3. # 3、参数:
  4. # 3-1、set(必须):表示一个做为参考基准的原集合
  5. # 3-2、element(必须):表示待从原集合中移除的一个指定元素
  6. # 4、功能:用于尝试从集合中移除一个指定的元素
  7. # 5、返回值:在原集合基础上移除指定元素后形成的集合,若指定元素不存在于原集合中,则返回原集合
  8. # 6、说明:
  9. # 6-1、如果元素存在于集合中,它将被移除;如果元素不存在于集合中,则不会有任何错误或异常抛出
  10. # 7、示例:
  11. # 创建一个集合
  12. my_set = {1, 2, 3, 4, 5}
  13. # 使用discard()方法尝试移除元素
  14. my_set.discard(3) # 元素3存在,将被移除
  15. print(my_set) # 输出: {1, 2, 4, 5}
  16. # 尝试移除一个不存在的元素
  17. my_set.discard(6) # 元素6不存在,不会有任何影响
  18. print(my_set) # 输出: {1, 2, 4, 5},集合没有改变
5-3-7、intersection()方法
  1. # 1、方法:set1.intersection
  2. # 2、语法:
  3. # 2-1、set1.intersection(set2)
  4. # 2-2、set1.intersection(set2, set3, ...)
  5. # 2-3、set1.intersection(*other_sets) 其中other_sets是一个包含其他集合的序列
  6. # 3、参数:
  7. # 3-1、set1(必须):表示一个做为参考基准的原集合
  8. # 3-2、set2/set3/*other_sets(可选):表示与原集合做对比的其他一个或多个集合
  9. # 4、功能:用于返回两个或更多集合的交集,即返回包含在所有集合中都有的元素的新集合
  10. # 5、返回值:
  11. # 5-1、无交集:返回一个空集合
  12. # 5-2、有交集:返回一个非空的新集合
  13. # 6、说明:
  14. # 6-1、intersection()方法不会修改原始的集合,而是返回一个新的集合
  15. # 7、示例:
  16. # 7-1、两个集合的交集
  17. # 创建两个集合
  18. set1 = {1, 2, 3, 4, 5}
  19. set2 = {4, 5, 6, 7, 8}
  20. # 计算交集
  21. result = set1.intersection(set2)
  22. # 打印结果
  23. print(result) # 输出: {4, 5}
  24. # 7-2、多个集合的交集
  25. # 创建三个集合
  26. set1 = {1, 2, 3, 4, 5}
  27. set2 = {4, 5, 6, 7, 8}
  28. set3 = {5, 8, 9, 10}
  29. # 使用 * 操作符计算交集
  30. result = set1.intersection(set2, set3)
  31. # 或者使用包含集合的列表
  32. other_sets = [set2, set3]
  33. result = set1.intersection(*other_sets)
  34. # 打印结果
  35. print(result) # 输出: {5}
5-3-8、intersection_update()方法
  1. # 1、方法:set1.intersection_update
  2. # 2、语法:
  3. # 2-1、set1.intersection_update(set2)
  4. # 2-2、set1.intersection_update(set2, set3, ...)
  5. # 2-3、set1.intersection_update(*other_sets) 其中other_sets是一个包含其他集合的序列
  6. # 3、参数:
  7. # 3-1、set1(必须):表示一个做为参考基准的原集合
  8. # 3-2、set2/set3/*other_sets(可选):表示与原集合做对比的其他一个或多个集合
  9. # 4、功能:用于更新一个集合,使其只包含该集合和指定集合(或集合序列)的交集
  10. # 5、返回值:经过处理的原集合
  11. # 6、说明:
  12. # 6-1、与intersection()方法不同,intersection_update()会直接修改原集合,而不是返回一个新的集合
  13. # 6-2、如果你需要保留原集合,你应该先使用intersection()方法来计算交集,然后将结果赋值给一个新的变量
  14. # 7、示例:
  15. # 7-1、两个集合的交集更新
  16. # 创建两个集合
  17. set1 = {1, 2, 3, 4, 5}
  18. set2 = {4, 5, 6, 7, 8}
  19. # 使用intersection_update()更新 set1
  20. set1.intersection_update(set2)
  21. # 打印更新后的set1
  22. print(set1) # 输出: {4, 5}
  23. # 7-2、多个集合的交集更新
  24. # 创建三个集合
  25. set1 = {1, 2, 3, 4, 5}
  26. set2 = {4, 5, 6, 7, 8}
  27. set3 = {5, 8, 9, 10}
  28. # 使用intersection_update()更新set1
  29. set1.intersection_update(set2, set3)
  30. # 或者使用包含集合的列表
  31. other_sets = [set2, set3]
  32. set1.intersection_update(*other_sets)
  33. # 打印更新后的set1
  34. print(set1) # 输出: {5}
5-3-9、isdisjoint()方法
  1. # 1、方法:set1.isdisjoint
  2. # 2、语法:set1.isdisjoint(set2)
  3. # 3、参数:
  4. # 3-1、set1(必须):表示一个做为参考基准的原集合
  5. # 3-2、set2(必须):表示与原集合做对比的其他集合,可以是空集合
  6. # 4、功能:用于检查两个集合是否没有交集
  7. # 5、返回值:一个布尔值
  8. # 6、说明:
  9. # 6-1、如果两个集合没有共同的元素,则isdisjoint()返回True;如果它们有至少一个共同的元素,则返回False
  10. # 6-2、isdisjoint()方法不会修改任何集合,它只是返回一个布尔值来表示两个集合是否有交集
  11. # 7、示例:
  12. # 7-1、两个没有交集的集合
  13. # 创建两个没有交集的集合
  14. set1 = {1, 2, 3}
  15. set2 = {4, 5, 6}
  16. # 使用isdisjoint()检查它们是否有交集
  17. result = set1.isdisjoint(set2)
  18. # 打印结果
  19. print(result) # 输出: True
  20. # 7-2、两个有交集的集合
  21. # 创建两个有交集的集合
  22. set1 = {1, 2, 3, 4}
  23. set2 = {4, 5, 6}
  24. # 使用isdisjoint()检查它们是否有交集
  25. result = set1.isdisjoint(set2)
  26. # 打印结果
  27. print(result) # 输出: False
5-3-10、issubset()方法
  1. # 1、方法:set1.issubset
  2. # 2、语法:
  3. # 2-1、set1.issubset(set2)
  4. # 2-2、set1 <= set2
  5. # 3、参数:
  6. # 3-1、set1(必须):表示一个做为参考基准的原集合
  7. # 3-2、set2(必须):表示与原集合做对比的其他集合,可以是空集合
  8. # 4、功能:用于检查一个集合是否是另一个集合的子集
  9. # 5、返回值:一个布尔值
  10. # 6、说明:
  11. # 6-1、如果第一个集合的所有元素都存在于第二个集合中,则结果为True;否则为False
  12. # 6-2、issubset()方法不会修改任何集合,它只是返回一个布尔值来表示两个集合之间的子集关系
  13. # 7、示例:
  14. # 7-1、一个集合是另一个集合的子集
  15. # 创建两个集合
  16. set1 = {1, 2, 3}
  17. set2 = {1, 2, 3, 4, 5}
  18. # 使用issubset()检查set1是否是set2的子集
  19. result = set1.issubset(set2)
  20. # 打印结果
  21. print(result) # 输出: True
  22. # 或者使用<=运算符
  23. result = set1 <= set2
  24. print(result) # 输出: True
  25. # 7-2、一个集合不是另一个集合的子集
  26. # 创建两个集合
  27. set1 = {1, 2, 3, 6}
  28. set2 = {1, 2, 3, 4, 5}
  29. # 使用issubset()检查set1是否是set2的子集
  30. result = set1.issubset(set2)
  31. # 打印结果
  32. print(result) # 输出: False
  33. # 或者使用 <= 运算符
  34. result = set1 <= set2
  35. print(result) # 输出: False
5-3-11、issuperset()方法
  1. # 1、方法:set1.issuperset
  2. # 2、语法:
  3. # 2-1、set1.issuperset(set2)
  4. # 2-2、set1 >= set2
  5. # 3、参数:
  6. # 3-1、set1(必须):表示一个做为参考基准的原集合
  7. # 3-2、set2(必须):表示与原集合做对比的其他集合,可以是空集合
  8. # 4、功能:用于检查一个集合是否是另一个集合的超集
  9. # 5、返回值:一个布尔值
  10. # 6、说明:
  11. # 6-1、如果第一个集合包含第二个集合的所有元素,则结果为True;否则为False
  12. # 6-2、issuperset()方法不会修改任何集合,它只是返回一个布尔值来表示两个集合之间的超集关系
  13. # 7、示例:
  14. # 7-1、一个集合是另一个集合的超集
  15. # 创建两个集合
  16. set1 = {1, 2, 3, 4, 5}
  17. set2 = {1, 2, 3}
  18. # 使用issuperset()检查set1是否是set2的超集
  19. result = set1.issuperset(set2)
  20. # 打印结果
  21. print(result) # 输出: True
  22. # 或者使用 >= 运算符
  23. result = set1 >= set2
  24. print(result) # 输出: True
  25. # 7-2、一个集合不是另一个集合的超集
  26. # 创建两个集合
  27. set1 = {1, 2, 3}
  28. set2 = {1, 2, 3, 4, 5}
  29. # 使用issuperset()检查set1是否是set2的超集
  30. result = set1.issuperset(set2)
  31. # 打印结果
  32. print(result) # 输出: False
  33. # 或者使用 >= 运算符
  34. result = set1 >= set2
  35. print(result) # 输出: False
5-3-12、pop()函数
  1. # 一个模拟set.pop()行为的自定义函数
  2. def set_pop(s):
  3. if not s:
  4. raise KeyError('pop from an empty set')
  5. # 将集合转换为列表,弹出第一个元素,然后更新集合
  6. item = list(s)[0]
  7. s.remove(item)
  8. return item
  9. # 示例用法
  10. my_set = {1, 2, 3, 4, 5}
  11. item = set_pop(my_set)
  12. print(item) # 输出:1
  13. print(my_set) # 输出:{2, 3, 4, 5}
5-3-13、remove()方法
  1. # 1、方法:set.remove
  2. # 2、语法:set.remove(element)
  3. # 3、参数:
  4. # 3-1、set(必须):表示一个做为参考基准的原集合
  5. # 3-2、element(必须):表示待从原集合中移除的一个指定元素
  6. # 4、功能:用于从集合中移除指定的元素
  7. # 5、返回值:在原集合基础上移除指定元素后形成的集合,若指定元素不存在于原集合中,则返回原集合
  8. # 6、说明:
  9. # 6-1、如果元素存在于集合中,则将其移除;如果元素不存在,则会引发一个KeyError异常
  10. # 6-2、如果你不确定元素是否存在于集合中,并且不希望因为尝试移除不存在的元素而引发异常,那么discard()方法是一个更好的选择
  11. # 7、示例:
  12. # 7-1、成功移除元素
  13. # 创建一个集合
  14. my_set = {1, 2, 3, 4, 5}
  15. # 移除元素 3
  16. my_set.remove(3)
  17. # 打印集合
  18. print(my_set) # 输出: {1, 2, 4, 5}
  19. # 7-2、尝试移除不存在的元素(将引发异常)
  20. # 创建一个集合
  21. my_set = {1, 2, 3, 4, 5}
  22. # 尝试移除元素6(不存在于集合中)
  23. try:
  24. my_set.remove(6)
  25. except KeyError:
  26. print("元素6不存在于集合中") # 输出:元素6不存在于集合中
  27. # 打印集合
  28. print(my_set) # 输出: {1, 2, 3, 4, 5}
5-3-14、symmetric_difference()方法
  1. # 1、方法:set1.symmetric_difference
  2. # 2、语法:
  3. # 2-1、set1.symmetric_difference(set2)
  4. # 2-2、set1 ^ set2
  5. # 3、参数:
  6. # 3-1、set1(必须):表示一个做为参考基准的原集合
  7. # 3-2、set2(必须):表示与原集合做对比的其他集合,可以是空集合
  8. # 4、功能:用于计算两个集合的对称差集
  9. # 5、返回值:返回一个新的集合,其中包含对称差集的结果
  10. # 6、说明:
  11. # 6-1、symmetric_difference()方法不会修改原始的集合,而是返回一个新的集合,其中包含对称差集的结果
  12. # 6-2、你可以使用symmetric_difference_update()方法来更新一个集合,使其包含与另一个集合的对称差集,这个方法会修改原始的集合
  13. # 7、示例:
  14. # 7-1、计算两个集合的对称差集
  15. # 创建两个集合
  16. set1 = {1, 2, 3, 4}
  17. set2 = {3, 4, 5, 6}
  18. # 使用symmetric_difference()方法计算对称差集
  19. symmetric_diff = set1.symmetric_difference(set2)
  20. # 打印结果
  21. print(symmetric_diff) # 输出: {1, 2, 5, 6}
  22. # 使用^运算符计算对称差集
  23. symmetric_diff_op = set1 ^ set2
  24. print(symmetric_diff_op) # 输出: {1, 2, 5, 6}
  25. # 7-2、使用空集合计算对称差集
  26. # 创建一个集合和一个空集合
  27. set1 = {1, 2, 3}
  28. set2 = set()
  29. # 使用symmetric_difference()方法计算对称差集
  30. symmetric_diff = set1.symmetric_difference(set2)
  31. # 打印结果
  32. print(symmetric_diff) # 输出: {1, 2, 3}
  33. # 使用^运算符计算对称差集
  34. symmetric_diff_op = set1 ^ set2
  35. print(symmetric_diff_op) # 输出: {1, 2, 3}
5-3-15、symmetric_difference_update()方法
  1. # 1、方法:set.symmetric_difference_update
  2. # 2、语法:set.symmetric_difference_update(other_set)
  3. # 3、参数:
  4. # 3-1、set1(必须):表示一个做为参考基准的原集合
  5. # 3-2、other_set(可选):表示与原集合做对比的其他集合,可以是空集合
  6. # 4、功能:用于更新一个集合,使其包含与另一个集合的对称差集,这意味着它会移除两个集合中都存在的元素,并添加仅存在于其中一个集合中的元素。
  7. # 5、返回值:经过处理后的原集合
  8. # 6、说明:
  9. # 6-1、symmetric_difference_update()方法直接修改调用它的集合,而不是返回一个新的集合
  10. # 6-2、如果想保留原始集合不变并获取对称差集,应该使用symmetric_difference()方法
  11. # 7、示例:
  12. # 7-1、使用symmetric_difference_update()更新集合
  13. # 创建两个集合
  14. set1 = {1, 2, 3, 4}
  15. set2 = {3, 4, 5, 6}
  16. # 使用symmetric_difference_update()更新set1
  17. set1.symmetric_difference_update(set2)
  18. # 打印更新后的set1
  19. print(set1) # 输出: {1, 2, 5, 6}
  20. # 注意:set1已经被修改,它现在包含与set2的对称差集
  21. # 7-2、使用空集合进行symmetric_difference_update()
  22. # 创建一个集合和一个空集合
  23. set1 = {1, 2, 3}
  24. set2 = set()
  25. # 使用symmetric_difference_update()更新set1
  26. set1.symmetric_difference_update(set2)
  27. # 打印更新后的set1
  28. print(set1) # 输出: {1, 2, 3}
  29. # 因为set2是空的,所以set1没有发生变化
5-3-16、union()方法
  1. # 1、方法:set1.union
  2. # 2、语法:
  3. # 2-1、set1.union(set2, ...)
  4. # 2-2、set1 | set2 | ...
  5. # 3、参数:
  6. # 3-1、set1(必须):表示一个做为参考基准的原集合
  7. # 3-2、set2(可选):表示与原集合做合并处理的其他集合,可以是空集合
  8. # 4、功能:用于合并两个或多个集合中的所有元素,并返回一个新的集合,其中包含所有独特的元素(注:独特,表示保持元素的唯一性)
  9. # 5、返回值:一个新的集合,其中包含所有独特的元素
  10. # 6、说明:
  11. # 6-1、如果某个元素在两个集合中都存在,它只会在结果集合中出现一次
  12. # 6-2、union()方法不会修改原始集合,而是返回一个新的集合,其中包含所有输入集合的并集
  13. # 7、示例:
  14. # 7-1、使用union()方法合并两个集合
  15. # 创建两个集合
  16. set1 = {1, 2, 3}
  17. set2 = {3, 4, 5}
  18. # 使用union()方法合并集合
  19. union_set = set1.union(set2)
  20. # 打印结果
  21. print(union_set) # 输出: {1, 2, 3, 4, 5}
  22. # 7-2、使用 | 运算符合并两个集合
  23. # 创建两个集合
  24. set1 = {1, 2, 3}
  25. set2 = {3, 4, 5}
  26. # 使用 | 运算符合并集合
  27. union_set = set1 | set2
  28. # 打印结果
  29. print(union_set) # 输出: {1, 2, 3, 4, 5}
  30. # 7-3、合并多个集合
  31. # 创建三个集合
  32. set1 = {1, 2, 3}
  33. set2 = {3, 4, 5}
  34. set3 = {5, 6, 7}
  35. # 使用union()方法合并多个集合
  36. union_set = set1.union(set2, set3)
  37. # 打印结果
  38. print(union_set) # 输出: {1, 2, 3, 4, 5, 6, 7}
5-3-17、update()方法
  1. # 1、方法:set.update
  2. # 2、语法:set.update(iterable, ...)
  3. # 3、参数:
  4. # 3-1、iterable:一个或多个可迭代对象,如列表、元组、集合等
  5. # 4、功能:用于向集合中添加元素
  6. # 5、返回值:修改原始集合或返回None
  7. # 6、说明:
  8. # 6-1、update()方法会修改原始集合,向其添加元素,但不会返回新的集合(它返回None)
  9. # 6-2、如果要添加的元素已经存在于集合中,update()方法不会有任何效果
  10. # 6-3、当你传递多个可迭代对象给update()方法时,它会依次处理每个可迭代对象,并将它们中的所有元素添加到集合中
  11. # 7、示例:
  12. # 7-1、使用update()方法向集合中添加元素
  13. # 创建一个集合
  14. my_set = {1, 2, 3}
  15. # 使用update()方法添加元素
  16. my_set.update([4, 5]) # 添加列表中的元素
  17. # 打印更新后的集合
  18. print(my_set) # 输出: {1, 2, 3, 4, 5}
  19. # 7-2、使用update()方法添加多个元素和集合
  20. # 创建一个集合
  21. my_set = {1, 2, 3}
  22. # 使用update()方法添加多个元素和另一个集合
  23. my_set.update([4, 5], {6, 7}) # 添加列表和集合中的元素
  24. # 打印更新后的集合
  25. print(my_set) # 输出: {1, 2, 3, 4, 5, 6, 7}

二、推荐阅读

1、Python-VBA函数之旅-set()函数

2、Python算法之旅

3、Python函数之旅

4、个人主页-神奇夜光杯-CSDN

文章知识点与官方知识档案匹配,可进一步学习相关知识
算法技能树首页概览61321 人正在系统学习中
遨游码海,我心飞扬
微信名片
注:本文转载自blog.csdn.net的神奇夜光杯的文章"https://myelsa1024.blog.csdn.net/article/details/139050694"。版权归原作者所有,此博客不拥有其著作权,亦不承担相应法律责任。如有侵权,请联系我们删除。
复制链接
复制链接
相关推荐
发表评论
登录后才能发表评论和回复 注册

/ 登录

评论记录:

未查询到任何数据!
回复评论:

分类栏目

后端 (14832) 前端 (14280) 移动开发 (3760) 编程语言 (3851) Java (3904) Python (3298) 人工智能 (10119) AIGC (2810) 大数据 (3499) 数据库 (3945) 数据结构与算法 (3757) 音视频 (2669) 云原生 (3145) 云平台 (2965) 前沿技术 (2993) 开源 (2160) 小程序 (2860) 运维 (2533) 服务器 (2698) 操作系统 (2325) 硬件开发 (2492) 嵌入式 (2955) 微软技术 (2769) 软件工程 (2056) 测试 (2865) 网络空间安全 (2948) 网络与通信 (2797) 用户体验设计 (2592) 学习和成长 (2593) 搜索 (2744) 开发工具 (7108) 游戏 (2829) HarmonyOS (2935) 区块链 (2782) 数学 (3112) 3C硬件 (2759) 资讯 (2909) Android (4709) iOS (1850) 代码人生 (3043) 阅读 (2841)

热门文章

101
推荐
关于我们 隐私政策 免责声明 联系我们
Copyright © 2020-2024 蚁人论坛 (iYenn.com) All Rights Reserved.
Scroll to Top