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
相关推荐
七牛云行业应用7 分钟前
重构实录:我删了 5 家大模型 SDK,只留了 OpenAI 标准库
python·系统架构·大模型·aigc·deepseek
知乎的哥廷根数学学派13 分钟前
基于多模态特征融合和可解释性深度学习的工业压缩机异常分类与预测性维护智能诊断(Python)
网络·人工智能·pytorch·python·深度学习·机器学习·分类
一人の梅雨43 分钟前
亚马逊SP-API商品详情接口轻量化实战:合规与商业价值提取指南
python
袁气满满~_~2 小时前
Python数据分析学习
开发语言·笔记·python·学习
axinawang3 小时前
二、信息系统与安全--考点--浙江省高中信息技术学考(Python)
python·浙江省高中信息技术
寻星探路3 小时前
【算法专题】滑动窗口:从“无重复字符”到“字母异位词”的深度剖析
java·开发语言·c++·人工智能·python·算法·ai
Dxy12393102163 小时前
python连接minio报错:‘SSL routines‘, ‘ssl3_get_record‘, ‘wrong version number‘
开发语言·python·ssl
吨吨不打野3 小时前
CS336——2. PyTorch, resource accounting
人工智能·pytorch·python
___波子 Pro Max.3 小时前
Python文件读取代码中strip()的作用
python
pumpkin845144 小时前
Go 学习全景引子:理解设计理念与工程思路
python·学习·golang