一、集合 核心特性
1. 无序性与唯一性
无序性 :集合 中的元素没有固定顺序,无法通过索引访问。唯一性 :自动过滤重复元素,确保每个元素唯一。
python">unique_set = { 1 , 2 , 2 , "苹果" , "苹果" }
2. 可变性
集合 支持动态添加或删除元素,但元素本身必须是可哈希的(不可变类型如字符串、数字、元组)。
python">valid_set = { "Yant" , 2025 , ( 1 , 2 ) }
invalid_set = { [ "Python" ] }
3. 高效查询
基于哈希表实现,in 操作时间复杂度为 O(1) ,适合高频查询。
python">skills = { "Python" , "AI" , "数据分析" }
print ( "Python" in skills)
二、集合 的创建与基础操作
1. 创建方式
方法 示例代码 说明 直接定义 s1 = {1, “Yant”, 3.14} 元素唯一且不可变 空集合 s2 = set () 不可用 {}(会创建空字典) 转换其他类型 s3 = set ([1, 2, 2]) 列表去重后转为集合
2. 增删改操作
方法 功能说明 示例 add() 添加单个元素 s1.add(4) → {1, “Yant”, 3.14, 4} update() 批量添加可迭代对象元素 s1.update([5, 6]) → 扩展集合 remove() 删除指定元素(不存在时报错) s1.remove(1) → {“Yant”, 3.14, 4} discard() 安全删除元素(不存在时不报错) s1.discard(99) → 无变化 clear() 清空所有元素 s1.clear() → set ()
三、集合 的数学运算
1. 基础运算符与方法
运算类型 运算符 方法 示例 并集 | union() {1, 2}|{2, 3} → {1, 2, 3} 交集 & intersection() {1,2} & {2,3} → {2} 差集 - difference() {1,2} - {2} → {1} 对称差集 ^ symmetric_difference() {1,2} ^ {2,3} → {1,3}
2. 集合 关系判断
python">a = { 1 , 2 }
b = { 1 , 2 , 3 }
print ( a. issubset ( b) )
print ( b. issuperset ( a) )
python">print ( a. isdisjoint( { 4 , 5 } ) )
四、集合 对象的内置方法
方法 功能说明 示例 copy() 创建集合 的浅拷贝 s_copy = s1.copy() pop() 随机删除并返回一个元素(空集合 报错) s1.pop() → 随机元素 len() 获取元素数量 len(s1) → 3 frozenset () 创建不可变集合 (可哈希,可作为字典键) fs = frozenset ({1,2})
五、高级应用场景
1. 数据去重与清洗
python">raw_data = [ "Yant" , "Python" , "Yant" , "AI" ]
cleaned_data = list ( set ( raw_data) )
2. 快速过滤无效数据
python">valid_items = { "A" , "B" , "C" }
input_data = [ "A" , "X" , "B" ]
cleaned = [ x for x in input_data if x in valid_items]
3. 社交关系分析
python">yant_friends = { "Bob" , "Charlie" }
alice_friends = { "Bob" , "Diana" }
common = yant_friends & alice_friends
六、性能优化与避坑指南
1. 性能对比
数据结构 100万元素查询耗时 适用场景 列表 3.2秒 需保留顺序的动态数据 集合 0.000003秒 高频查询、去重、集合 运算
2. 常见错误
空集合 陷阱 :{} 是空字典,空集合 需用 set () 。默认参数问题 :避免将可变集合 作为函数默认参数。顺序依赖 :集合 无序,需顺序时改用有序字典或列表。
总结 Python集合 凭借其唯一性、高效查询和丰富的集合 运算,成为数据去重、关系分析和高频查询场景的利器。掌握其核心特性与方法(如add()、union()、issubset ()),结合frozenset 等高级用法,能显著提升代码效率。需注意集合 的无序性和元素不可变性限制,合理选择数据结构 以满足需求。