| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889 |
- """set_basics.py - Python 集合基础示例
- 包含常见的集合操作示例:创建、添加、删除、成员判断、集合运算、去重、推导式等。
- 运行后会打印每个示例的结果,并在代码中注释预期输出。
- """
- def main():
- # 1. 创建集合
- fruits = {"apple", "banana", "orange"}
- nums = {1, 2, 3, 3, 4} # 重复元素会自动去重
- empty_set = set() # 空集合必须用 set(),不能写 {},{} 是空字典
- mixed = {1, "python", (2, 3)} # 集合元素必须是可哈希对象
- print("fruits ->", fruits)
- print("nums ->", nums) # {1, 2, 3, 4}
- print("empty_set ->", empty_set)
- print("mixed ->", mixed)
- # 2. 添加元素
- fruits.add("grape")
- fruits.add("apple") # 已存在,重复添加不会报错
- print("after add ->", fruits)
- # 3. 删除元素
- fruits.remove("banana")
- print("after remove('banana') ->", fruits)
- # discard() 不会因为不存在而报错
- fruits.discard("pear")
- print("after discard('pear') ->", fruits)
- # pop() 随机弹出一个元素
- popped = fruits.pop()
- print("pop() ->", popped, "; after pop ->", fruits)
- # 4. 成员判断
- print("'apple' in fruits ->", 'apple' in fruits)
- print("'mango' in fruits ->", 'mango' in fruits)
- # 5. 长度与遍历
- print("len(fruits) ->", len(fruits))
- for item in fruits:
- print("loop ->", item)
- # 6. 集合运算:并集、交集、差集、对称差集
- a = {1, 2, 3, 4}
- b = {3, 4, 5, 6}
- print("a | b ->", a | b) # 并集
- print("a.union(b) ->", a.union(b))
- print("a & b ->", a & b) # 交集
- print("a.intersection(b) ->", a.intersection(b))
- print("a - b ->", a - b) # 差集
- print("a.difference(b) ->", a.difference(b))
- print("a ^ b ->", a ^ b) # 对称差集
- print("a.symmetric_difference(b) ->", a.symmetric_difference(b))
- # 7. 子集和超集
- c = {1, 2}
- print("c.issubset(a) ->", c.issubset(a))
- print("a.issuperset(c) ->", a.issuperset(c))
- # 8. 集合推导式
- squares = {x * x for x in range(1, 8) if x % 2 == 0}
- print("squares ->", squares)
- # 9. 去重
- names = ["alice", "bob", "alice", "charlie", "bob"]
- unique_names = set(names)
- print("unique_names ->", unique_names)
- # 10. 冰冻集合(不可变集合)
- frozen = frozenset({1, 2, 3})
- print("frozen ->", frozen)
- # frozen.add(4) # 会报错,因为 frozenset 不可修改
- # 11. 集合的特点
- # - 无序
- # - 元素唯一
- # - 可变(set)/ 不可变(frozenset)
- # - 适合去重、快速判断成员是否存在
- if __name__ == '__main__':
- main()
|