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
相关推荐
Cloud_Shy61810 分钟前
解读《Effective Python 3rd Edition》:从练气到老魔(第五章 Item 33 - 35)
开发语言·人工智能·笔记·python·学习方法
abcy0712131 小时前
python pandas csv异步后台清洗前端优先返回成功信息
前端·python·pandas
颜酱1 小时前
LangChain使用RAG 入门:让大模型读懂你的私有文档
python·langchain
天天进步20152 小时前
Python全栈项目--校园智能宿舍管理系统
开发语言·python
测试员周周2 小时前
【AI测试智能体-面试】AI测试面试60题(附回答思路)
人工智能·python·功能测试·测试工具·单元测试·自动化·测试用例
用户8356290780512 小时前
使用 Python 操作 Word 评论和回复
后端·python
Zella折耳根3 小时前
复习篇-继承和接口
java·开发语言·python
诗词在线3 小时前
求推荐飞花令
大数据·人工智能·python
yijianace3 小时前
Python线程与多线程完全总结(从入门到理解并发本质)
开发语言·python
会Tk矩阵群控的小木4 小时前
基于Python的iMessage短信群发与社媒多账号统一管理系统实现
开发语言·windows·python·新媒体运营·开源软件·个人开发