set_basics.py 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. """set_basics.py - Python 集合基础示例
  2. 包含常见的集合操作示例:创建、添加、删除、成员判断、集合运算、去重、推导式等。
  3. 运行后会打印每个示例的结果,并在代码中注释预期输出。
  4. """
  5. def main():
  6. # 1. 创建集合
  7. fruits = {"apple", "banana", "orange"}
  8. nums = {1, 2, 3, 3, 4} # 重复元素会自动去重
  9. empty_set = set() # 空集合必须用 set(),不能写 {},{} 是空字典
  10. mixed = {1, "python", (2, 3)} # 集合元素必须是可哈希对象
  11. print("fruits ->", fruits)
  12. print("nums ->", nums) # {1, 2, 3, 4}
  13. print("empty_set ->", empty_set)
  14. print("mixed ->", mixed)
  15. # 2. 添加元素
  16. fruits.add("grape")
  17. fruits.add("apple") # 已存在,重复添加不会报错
  18. print("after add ->", fruits)
  19. # 3. 删除元素
  20. fruits.remove("banana")
  21. print("after remove('banana') ->", fruits)
  22. # discard() 不会因为不存在而报错
  23. fruits.discard("pear")
  24. print("after discard('pear') ->", fruits)
  25. # pop() 随机弹出一个元素
  26. popped = fruits.pop()
  27. print("pop() ->", popped, "; after pop ->", fruits)
  28. # 4. 成员判断
  29. print("'apple' in fruits ->", 'apple' in fruits)
  30. print("'mango' in fruits ->", 'mango' in fruits)
  31. # 5. 长度与遍历
  32. print("len(fruits) ->", len(fruits))
  33. for item in fruits:
  34. print("loop ->", item)
  35. # 6. 集合运算:并集、交集、差集、对称差集
  36. a = {1, 2, 3, 4}
  37. b = {3, 4, 5, 6}
  38. print("a | b ->", a | b) # 并集
  39. print("a.union(b) ->", a.union(b))
  40. print("a & b ->", a & b) # 交集
  41. print("a.intersection(b) ->", a.intersection(b))
  42. print("a - b ->", a - b) # 差集
  43. print("a.difference(b) ->", a.difference(b))
  44. print("a ^ b ->", a ^ b) # 对称差集
  45. print("a.symmetric_difference(b) ->", a.symmetric_difference(b))
  46. # 7. 子集和超集
  47. c = {1, 2}
  48. print("c.issubset(a) ->", c.issubset(a))
  49. print("a.issuperset(c) ->", a.issuperset(c))
  50. # 8. 集合推导式
  51. squares = {x * x for x in range(1, 8) if x % 2 == 0}
  52. print("squares ->", squares)
  53. # 9. 去重
  54. names = ["alice", "bob", "alice", "charlie", "bob"]
  55. unique_names = set(names)
  56. print("unique_names ->", unique_names)
  57. # 10. 冰冻集合(不可变集合)
  58. frozen = frozenset({1, 2, 3})
  59. print("frozen ->", frozen)
  60. # frozen.add(4) # 会报错,因为 frozenset 不可修改
  61. # 11. 集合的特点
  62. # - 无序
  63. # - 元素唯一
  64. # - 可变(set)/ 不可变(frozenset)
  65. # - 适合去重、快速判断成员是否存在
  66. if __name__ == '__main__':
  67. main()