Skip to content

Latest commit

 

History

History
272 lines (186 loc) · 5.14 KB

File metadata and controls

272 lines (186 loc) · 5.14 KB
Error in user YAML: (<unknown>): could not find expected ':' while scanning a simple key at line 3 column 1
---
- oeasy Python 0147
- 这是 oeasy 系统化 Python 教程,从基础一步步讲,扎实、完整、不跳步。愿意花时间学,就能真正学会。
本教程同步发布在: 

     个人网站: `https://oeasy.org` 
     蓝桥云课: `https://www.lanqiao.cn/courses/3584` 
     GitHub: `https://github.com/overmind1980/oeasy-python-tutorial` 
     Gitee: `https://gitee.com/overmind1980/oeasypython` 
---

比较运算符

回忆

  • 这次研究下面这些类的比较运算符
    • 字符串 str
    • 字节序列 bytes
    • 列表 list
    • 元组 tuple

整体的口诀还是

从前往后,有大于无

  • 如果有嵌套的列表之类的东西
    • 就比较这两个列表
    • 如果此子列表中还有列表
    • 就继续比较下去
    • 直到分出大小
  • 除了列表之外还有什么容器呢?🤔

帮助手册

图片描述

mapping

  • 映射类
    • 主要指的是字典

图片描述

  • 字典
    • 没有 大于小于
    • 只能判断是否相等

动手

{"a": 1, "b": 2} > {"a": 1, "b": 2}
{"a": 1, "b": 2} == {"a": 1, "b": 2}
{"a": 1, "b": 2} == {"a": 1, "c": 2}
  • 大于号 直接 报错
    • 字典不支持这个

图片描述

  • 如果他们只是 key相同呢?

key

  • keys 相同
    • value 不同
{"a": 1, "b": 2} == {"a": 1, "b": 0}
  • 不光看key
    • 也看 value
  • 当且仅当 (key, value) pair 都相等

图片描述

  • 如果他们次序不同呢?

次序

{"a": 1, "b": 2} == {"b": 2, "a": 1}
  • 结果

图片描述

  • 不是说字典 有次序吗?

解释

图片描述

  • 明确定义
    • 只要key、value pair 都相等就行
    • 比较时 无需次序

比较水果价格

price1 = {"苹果": 8, "香蕉": 5, "橘子": 6}
price2 = {"橘子": 6, "苹果": 8, "香蕉": 5}

print(price1 == price2)  # True

图片描述

图片描述

  • 还有集合类
    • set
    • frozenSet

集合set

  • 搜索set

图片描述

是否相等

  • 可以判断是否相等/不等
{1, 2} == {1, 2}
{1, 2} == {1, 2, 2}
{1, 2, 2}
{1, 2} == {1, 2, 3}
  • 集合内部可以合并同类项

图片描述

  • 大于小于如何判断呢?

大于小于

{1, 2} < {1, 2, 3}
{1, 2} > {1, 2, 3}
  • 如果有 从属子集关系的话
    • 超集 大于 子集
    • 子集 小于 超集

图片描述

  • 大于/小于
    • 必须是 真子集/真超集

大于等于

{1, 2} > {1, 2}
{1, 2} >= {1, 2}
  • 大于等于 包括 等于

图片描述

无关集合

{1, 2} > {1, 3}
{1, 2} < {1, 3}
  • 没有 从属子集 关系的话
    • 就是不大于也不小于也不相等
    • 就是不等于

图片描述

  • 冻结集合呢?

试一下

frozenset({1, 2}) == frozenset({1, 2})
frozenset({1, 2}) == {1, 2}
frozenset({1, 2, 3}) == {1, 2}
frozenset({1, 2, 3}) == {1, 3}
frozenset({1, 2, 3}) == {1, 4}
  • 冰冻集合
    • 比大小的 时候相当于 集合

图片描述

  • 比较运算符 有什么特性 吗?

比较的对称性

  • 对称性
    • 等号 两边 可以 对换
    • 不等号 两边 可以 对换
    • 大于号 等价于 两边对换后 换小于号

图片描述

  • 除此之外还有什么特性么?

比较的传递性

x > y 
y > z
  • 能推出
x > z
  • imply 就是暗示的意思
    • 可以判断出来

图片描述

应用

base_auth = {"拍照", "存储"}
full_auth = {"拍照", "存储", "定位", "麦克风"}

print(base_auth < full_auth)   # True
print(full_auth > base_auth)   # True

图片描述

图片描述

总结

  • 这次研究了比较
    • 映射类 map
      • dict 字典
    • 集合类
      • set
      • frozenset
比较运算符 字典 (dict) 集合 (set)
== 键值对完全相同则为 True
顺序不影响
元素完全相同则为 True
顺序不影响
!= 键/值有任一不同 → True 元素有任一不同 → True
<、<=、>、>= 直接报错
字典不支持大小比较
支持
表示子集/超集关系
  • 比较运算符还有
    • 对称性
    • 传递性
    • 否定之否定原理
  • COMPARISION 中还有个
    • 成员测试
    • Membership test

图片描述

  • 怎么用呢??🤔
  • 下次再说 👋

  • 本文来自 oeasy Python 系统教程。
  • 想完整、扎实学 Python,
  • 搜索 oeasy 即可。