博客摘要
集合是日常数据清洗神器,90%用于数据去重、多列表对比。本文区分运算符、内置方法两套运算写法,说明集合不能做的操作和使用禁区。
一、集合核心三大特性
元素唯一性:自动剔除重复数据,一行代码列表去重:
list(set(原列表)),缺点丢失顺序,Python3.7+可保留无序性:不支持下标索引、不支持切片,无法通过位置取值
元素不可变:内部元素只能是int/str/tuple,列表、字典无法存入集合
二、四大集合运算实战(符号+方法双写法)
定义两组测试数据:a={1,2,3,4},b={3,4,5,6}
交集(双方共有):符号& / 方法intersection() 结果{3,4}
并集(双方所有去重):符号| / 方法union() 结果{1,2,3,4,5,6}
差集(a独有):符号- / 方法difference() 结果{1,2}
对称差集(双方互不共有):符号^ / 方法symmetric_difference() 结果{1,2,5,6}
三、可变集合与不可变集合
普通set可变,支持add添加、remove删除;frozenset不可变集合,可作为字典key,用于需要去重且永久不可修改的场景。
业务实战场景
用户手机号列表去重
对比两份日志,找出新增、删除数据
判断两个数据集是否存在交集(黑名单匹配)