oeasy玩py111列表_排序_sort_比较大小

oeasy玩py111列表排序-sort比大小

列表 - 排序 - order

回忆

  • 上次我们了解
    • 最大值/最小值 函数
    • max/min
  • 可以直接给列表 排序 吗?

帮助

  • 好像还真有

    help(list.sort)

  • 动手试试

排序

复制代码
nl = [0, 3, 2, 1, 4]
nl.sort()
print(nl)
  • 列表对象 调用 sort方法
    • 列表项 从此 按升序排列
  • 如果 想 降序呢?

翻转

  • 寻找方法

    list.

  • list类 有个 reverse方法

  • 啥意思?

词源

  • reverse 来自于 vert
  • turn 和 vert 是同源的

寻求帮助

复制代码
help(list.reverse)
  • 参数列表
    • 第一个 是 self
    • 默认的
  • 原地 把列表 反转

效果

复制代码
nl
nl.reverse()
nl
  • reverse方法 让 列表
    • 首尾翻转
  • reverse方法
    • 对字符列表用吗?

字符列表

复制代码
cl = list("oeasy")
print(cl)
cl.sort()
print(cl)
cl.reverse()
print(cl)
  • 字符列表可以反转
    • 此时的列表项 是 字符
  • 如果 列表项 是 字符串呢?
    • 还能 排序 么?

字符串

复制代码
sl = ["oeasy", "o2zz", "o3z"]
print(sl)
sl.sort()
print(sl)
  • 可以排序
  • 字符串咋排序呢?

字符串比较

  • 排序的前提是 能够比大小

    "o2zz" < "o3z"
    "o3z" < "oeasy"

  • 字符串可以比大小

  • 具体怎么比的呢?

挨个比较

  • 先看第一个
    • 都是'o'
    • 继续
  • 再看第二个
    • 比较 ascii 的值
    • '2' < '3' < 'e'
    • 不用再往后看了
  • sort方法 效率咋样?

时间复杂度

  • 算法效率
    • 用 时间复杂度 描述
    • O(nlogn)
  • 这怎么理解?

Big O Notation

  • 排序时间 和 列表长度 相关
  • 对于 n维列表中 每一个位置
    • 都得从 n个列表项中 挑一个出来
    • 复杂度 是 O(n*n)
    • O(n2)
  • 可以优化吗?

优化

  • 经过优化之后

    • 成为O(n*logn)
      • log(n) 是 以二为底的对数
  • 对于 同样长度的 列表

    • cpu需要干的活 少了
    • 完成时间 短了
    • 电就 省下来了
  • O(n)
    • Big O Notation
    • 大O表示法
    • 时间复杂度表示方法
    • 横轴 空间
    • 纵轴 是 时间

参数细节

复制代码
help(list.sort)
  • list.sort 共3个参数
    1. self
    2. key
    3. reverse
  • self是自己
  • 谁自己?

self

  • 哪个 列表对象 调用方法
    • 就是 哪个对象 自己
  • 类 class

    • 是 抽象的 数据类型
    • list 就是 列表类
    • 列表类 有一些 方法
  • 对象 object

    • 是 某个类的 实例对象

    • instance object

      nl.sort()
      cl.sort()

  • 各调各的

  • 列表中 列表项的类型

    • 可以 不同 吗?

来试试

  • 两个列表项

    1. 字符串
    2. 整形

    lst = ["oeasy",123]
    lst[0]
    lst[1]
    type(lst[0])
    type(lst[1])

  • 类型 还是列表

  • 列表项 是 不同类型的话
    • 还能 排序 吗??

排序(sort)

复制代码
lst = ["oeasy", 123]
lst.sort()
  • TypeError
    • int 和 str
    • 比不了大小
  • 咋理解?

简化

  • 简化之后

    "oeasy" < 123

  • 整型变量 和 字符串变量

    • 一个 是 名字
    • 另一个 是 体重
    • 驴唇不对马嘴
  • 比不了 大小
    • 也就 排不了序

总结

  • 这次我们了解
    • 列表排序
      • 原地 完成
      • in-place
  • 排序规则 依赖于 列表项类型
数据类型 比较规则
数字型 基于数字直接比
字符串 转化为ASCII码
  • 我就想让 字符串 和 数值 一起排序
    • 有可能吗?
  • 下次再说 👋 s
相关推荐
嘿嘻哈呀5 分钟前
Python类型检查和文档生成
python
闻哥1 小时前
深入理解 Spring @Conditional 注解:原理与实战
java·jvm·后端·python·spring
小鸡吃米…1 小时前
机器学习 - 堆叠集成(Stacking)
人工智能·python·机器学习
青春不朽5121 小时前
Scikit-learn 入门指南
python·机器学习·scikit-learn
进击的小头1 小时前
FIR滤波器实战:音频信号降噪
c语言·python·算法·音视频
乔江seven1 小时前
【python轻量级Web框架 Flask 】2 构建稳健 API:集成 MySQL 参数化查询与 DBUtils 连接池
前端·python·mysql·flask·web
2301_810730102 小时前
python第四次作业
数据结构·python·算法
马剑威(威哥爱编程)2 小时前
Libvio.link爬虫技术解析:搞定反爬机制
爬虫·python
zhougl9962 小时前
Java 枚举类(enum)详解
java·开发语言·python
恋爱绝缘体12 小时前
Java语言提供了八种基本类型。六种数字类型【函数基数噶】
java·python·算法