oeasy Python 102 集合_运算_交集_并集_差集_对称差集

oeasy python 127集合运算 交集 并集 差集

这是 oeasy 系统化 Python 教程,从基础一步步讲,扎实、完整、不跳步。愿意花时间学,就能真正学会。

集合_运算_交集_并集_差集_对称差集

回忆

  • 上次 学习了 冰封集合

    • 不能修改的 集合

    • 就是 冰封集合

可修改类型 不可修改类型
列表(list) 元组(tuple)
集合(set) 冰封集合(frozenset)
  • 集合 有啥运算 呢?🤔

回忆一下集合运算

  • 高中数学中有集合的运算

    • 交集

    • 并集

    • 差集

  • 需要先有 两个集合

基础

复制代码
l = list(range(10))
l
s1 = set(l[::2])
s2 = set(l[::3])
  • 两个集合

    • s1 十以内 能被2整除的 数

    • s2 十以内 能被3整除的 数

  • 集合分布
  • 看看交集

集合的交集 intersection

  • 交集

    • 两个集合 都有的元素

    • 构成的 集合

  • 中间的 共有部分

    • intersection

      • 既在s1 这个section

      • 又在s2 这个section

  • 看看效果

intersection

  • 交集方法 不会影响 两个列表本身
  • 交集运算 有运算符 吗?

交集运算

  • 交集运算符 &
  • 效果与intersection函数一样

    • 都是求交集

孙子算经

  • 说有这么一个数字

    • 三个三个数 余二

    • 五个五个数 余三

    • 七个七个数 余二

  • 问这个数是多少?

被 三整除 余二

  • 这样我们就得到了所有被三整除余 2 的数字

  • 不要翻页

    • 把后面 独立完成吧!

交集运算

复制代码
l = list(range(100))
s1 = set(l[2::3])
s2 = set(l[3::5])
s3 = set(l[2::7])
s1 & s2 & s3
  • 运行结果
  • 观察答案
  • 交集之后是并集

并集

  • union 指的是联合
  • 把两个集合和到一起

  • 试一试

union

复制代码
l = list(range(10))
l
s1 = set(l[::2])
s2 = set(l[::3])
s1.union(s2)
  • 运行结果
  • 两个集合的并集
  • 并集运算 不会 影响原列表
  • 可以并集 有 运算符 吗?

| union运算

  • |

    • 就是求并

    • 就是union运算

  • 可以连续运算吗?

连续运算

复制代码
s1 = {1}
s2 = {1, 2}
s3 = {1, 2, 3}
  • 开始运算
  • 一般都是 从左往右计算 的

特殊情况

复制代码
s1 = {0}
s2 = {1}
s1 | s1 & s2
  • 运算结果
  • 可是 这个 如何理解?

    {0} & {1}

  • 不是应该得到空集吗?

运算优先级(precedence)

  • 运算符 有优先级

    • 就像 先乘除 后加减 一样
  • & 和 | 的优先级

    • 是不同的

      s1 = {0}
      s2 = {1}
      s1 | s1 & s2
      s1 | (s1 & s2)

  • 优先级

    • 先 &(交)

    • 后 |(并)

  • 如果我就想 先并后交 呢?

括号

复制代码
(s1 | s1) & s2
  • 有括号的要优先

    • 得到 空集
  • 还有啥运算?

差集运算

复制代码
help(set.difference)
  • 新运算 差值运算
  • 如何理解difference?

difference

  • 词根来自于拉丁

    • 后来成为古法语

      • 最后成为英语单词
  • di

    • 分开
  • ferre

    • 抚养的
  • difference

    • 分开抚养的

    • 不同

具体运算

复制代码
s1 = set(list(range(10))[::2])
s2 = set(list(range(10))[::3])
  • 代码

    s1.difference(s2)
    s2.difference(s1)

  • 效果

  • 差集获得
  • 差集 不影响 原集合

  • 差集 也有 运算符 吗?

运算符

复制代码
s1 - s2
s2 - s1
  • 既然可以从s1 中刨除 s2

  • 就可以从s2 中刨除 s1

  • 得到的差集(difference)
  • 这俩有点对称

    • s1 - s2

    • s2 - s1

  • 不过 还不算 真对称

对称差

  • 有一种 symmetric_difference

  • 什么意思?

  • symmetric sɪ'metrɪk

    • symmetry ˈsɪmətri

    • syn-

      • 同步的

      • 一起的

    • *me

      • 度量

        • measure 测量

        • meter 测量装置

        • month 计算月份

    • 一起度量

      • 对称
  • symmetric_difference

    • 对称差集

对称差集

  • 具体计算

对称

  • 对称差集 中的 元素

    • 要么 在 这个集合

    • 要么 在 那个集合

    • 不同时 在两个集合

    • 像 逻辑运算中的 异或

  • 如何理解对称呢?
  • s1对于s2的对称差集

    • 就是s2 对于 s1 的对称差集

    • 这很对称

  • 可以有 运算符 吗?

符号^

  • 再试试
  • 可以把 对称差集

    • 理解成 或者 吗??

对称差集

复制代码
s1 = set(list(range(10))[::2])
s2 = set(list(range(10))[::3])
s1 & s2 
s1 | s2
s1 | s2 - s1 & s2
(s1 | s2) - (s1 & s2)
(s1 - s2) | (s2 - s1)
  • 注意运算的时候要加括号
  • 对称差集本质上是

    • 并集减去交集

总结

  • 这次学习了集合的运算
  • 集合总共四种运算

| 运算名称 | 方法名 | 运算符 |
|------|----------------------|-----|---|
| 交集 | intersection | & |
| 并集 | union | \ | |
| 差集 | difference | - |
| 对称差集 | symmetric_difference | ^ |

  • 这些运算可以做增强赋值吗?🤔

    • 就像 i += 1那样
  • 下次再说 👋

  • 本文来自 oeasy Python 系统教程。

  • 想完整、扎实学 Python,

  • 搜索 oeasy 即可。

相关推荐
爱吃提升3 小时前
Python自动驾驶图像识别完整实战教程(OpenCV+YOLOv8,附可直接运行源码)
python·opencv·自动驾驶
研☆香3 小时前
JavaScript 绘制简单不规则图形:三角形与五角星实战教程
开发语言·javascript·ecmascript
数聚天成DeepSData3 小时前
企业知识库 RAG 数据准备与文档清洗:Dify、RAGFlow、扣子选型指南
开发语言·人工智能·机器学习·自然语言处理·sentinel·cocos2d
我是唐青枫3 小时前
Java SLF4J 实战指南:从日志门面到 Logback、MDC 和链路追踪
java·开发语言·logback
statistican_ABin3 小时前
2026 FIFA 世界杯比赛与球队数据探索性分析
人工智能·python·数据挖掘·数据分析
qetfw3 小时前
yt-dlp:下载公开视频、字幕、封面和音频的实用命令
python·音视频·开源项目·效率工具
aramae3 小时前
C++11:现代C++的里程碑
c语言·开发语言·c++·windows·git·后端
QH_ShareHub3 小时前
GPU 完整运行过程:驱动、CUDA Toolkit、Conda、Python PyTorch 与 R torch
pytorch·python·conda
AbsoluteLogic3 小时前
Python——必学内置模块 Sys
python