当前位置: 首页 > news >正文

Python 集合速查:去重、并交差运算一文掌握

在 Python 的数据结构中,集合(set)常常被忽视,但它在数据去重、数学运算以及快速查找方面有着不可替代的优势。本文将通过示例快速带你掌握集合的常见操作与应用场景,让你在学习和面试中都能从容应对。

一、什么是集合?

集合(set) 是一种 无序、去重、可变 的数据结构。

使用花括号 {} 或 set() 定义,元素必须是不可变对象(如数字、字符串、元组)。

定义集合

s1 = {1, 2, 3, 3, 4}

print(s1) # {1, 2, 3, 4} 自动去重

s2 = set([1, 2, 2, 3])

print(s2) # {1, 2, 3}

二、集合的常用操作

1. 增删改查

s = {1, 2, 3}

2. 添加元素

s.add(4)          

print(s) # {1, 2, 3, 4}

 

3. 移除元素(remove 不存在会报错)

s.remove(2)       

print(s) # {1, 3, 4}

4. 安全移除(discard 不存在也不会报错)

s.discard(10)

5. 随机删除一个元素

s.pop()           

print(s)

6. 清空集合

s.clear()

print(s) # set()

2. 集合运算(核心)

集合天然支持数学运算,常用于数据处理:

a = {1, 2, 3}

b = {3, 4, 5}

print(a | b) # 并集 {1, 2, 3, 4, 5}

print(a & b) # 交集 {3}

print(a - b) # 差集 {1, 2}

print(a ^ b) # 对称差集 {1, 2, 4, 5}

三、集合的应用场景

1. 数据去重

nums = [1, 2, 2, 3, 4, 4, 5]

unique = list(set(nums))

print(unique) # [1, 2, 3, 4, 5]

2. 成员关系判断

集合查找的时间复杂度接近 O(1),比列表更快:

fruits = {"apple", "banana", "cherry"}

print("apple" in fruits) # True

print("orange" in fruits) # False

3. 多集合数据处理

适用于标签筛选、关键词匹配等场景:

skills_a = {"Python", "SQL", "Linux"}

skills_b = {"Python", "Java", "C++"}

print(skills_a & skills_b) # {'Python'} 两人共有技能

print(skills_a - skills_b) # {'SQL', 'Linux'} A独有技能

4. 去除重复字符

s = "hello world"

print(set(s)) # {'h', 'd', 'l', 'o', 'r', 'e', ' ', 'w'}

四、集合面试常见考点

1. 集合与列表的区别

列表:有序,可重复。

集合:无序,不可重复,查找效率高。

2. 集合是否可作为字典的键?

不行,因为集合是可变类型。

但 冻结集合(frozenset) 是不可变的,可以作为字典键。

fs = frozenset([1, 2, 3])

d = {fs: "immutable set"}

print(d) # {frozenset({1, 2, 3}): 'immutable set'}

3. 集合运算的时间复杂度

并集、交集、差集等操作通常在 O(n) 时间内完成,效率高于列表嵌套循环。

五、总结

集合是 去重利器,并且支持 并集、交集、差集、对称差集 等数学运算。

常见应用包括 数据去重、快速查找、多集合处理。

面试中高频考点包括 集合与列表区别、frozenset 的使用 以及 集合运算原理。

熟练掌握集合操作,可以让你在实际开发与算法题中快速解决问题。

http://www.dtcms.com/a/446846.html

相关文章:

  • Cesium 方位角方法和原理
  • 桃城区网站制作公司上海自己注册公司
  • 举报网站建设宁波建工工程集团有限公司
  • 项目1:FFMPEG推流器讲解(一):FFMPEG重要结构体讲解
  • 做网站上海公司怎么做网站的浏览量统计
  • 如何填写网站建设计划表邯郸网站设计开发公司
  • 不需要iis的网站开发做网站有用吗
  • 苏州建设网站的公司电商运营推广怎么做
  • 阿里云通义千问开源新模型:多模态能力再突破
  • 【数之重复仅次数】2022-11-28
  • 站长之家是干什么的怎么建设自己个人网站
  • 毕设网站建设一个网站建设需要什么
  • 小杰深度学习(six)——卷积神经网络——计算机眼中的图象、卷积为什么能识别图象
  • 扁平化配色方案网站去哪优化网站关键词
  • 国外网站建设视频教学登封建设局网站
  • 简单大气的成品网站惠安县建设局网站
  • 制作钓鱼网站教程源码net网站是国际域名吗
  • 网站找不到的原因建站优化推广
  • 142、【OS】【Nuttx】【周边】效果呈现方案解析:strace 日志解析(八)
  • 为了推出企业网站建设山东电力建设河北分公司网站
  • 项目实践总结
  • 做社情网站犯法怎么办手机网站表单验证
  • 泉州专业网站建设公司建立网站要钱吗
  • 刚做的网站怎么在百度上能搜到logo设计在线生成免费免费
  • 用wordpress开发网站模板网站改版怎样做301
  • 宿迁北京网站建设洛可可工业设计公司
  • 网站改版汇报企业官网网站 优帮云
  • 群晖QC访问慢?终极解决方案
  • Hi3516DV500/HI3519DV500开发笔记之环境搭建和编译固件
  • 网站建设营销型做网站页面一般用什么软件