首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >oeasy玩py111列表_排序_sort_比较大小

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

原创
作者头像
oeasy
发布于 2025-12-23 19:45:50
发布于 2025-12-23 19:45:50
3620
举报

列表 - 排序 - order

回忆

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

帮助

图片描述
图片描述
  • 好像还真有
代码语言:javascript
复制
help(list.sort)
  • 动手试试

排序

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

翻转

  • 寻找方法
代码语言:javascript
复制
list.
  • list类 有个 reverse方法
图片描述
图片描述
  • 啥意思?

词源

  • reverse 来自于 vert
图片描述
图片描述
  • turn 和 vert 是同源的
图片描述
图片描述

寻求帮助

代码语言:javascript
复制
help(list.reverse)
  • 参数列表
    • 第一个 是 self
    • 默认的
图片描述
图片描述
  • 原地 把列表 反转

效果

代码语言:javascript
复制
nl
nl.reverse()
nl
  • reverse方法 让 列表
    • 首尾翻转
图片描述
图片描述
  • reverse方法
    • 对字符列表用吗?

字符列表

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

字符串

代码语言:javascript
复制
sl = ["oeasy", "o2zz", "o3z"]
print(sl)
sl.sort()
print(sl)
  • 可以排序
图片描述
图片描述
  • 字符串咋排序呢?

字符串比较

  • 排序的前提是 能够比大小
代码语言:javascript
复制
"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表示法
    • 时间复杂度表示方法
    • 横轴 空间
    • 纵轴 是 时间

参数细节

代码语言:javascript
复制
help(list.sort)
  • list.sort 共3个参数
    1. self
    2. key
    3. reverse
  • self是自己
图片描述
图片描述
  • 谁自己?

self

  • 哪个 列表对象 调用方法
    • 就是 哪个对象 自己
图片描述
图片描述
  • 类 class
    • 是 抽象的 数据类型
    • list 就是 列表类
    • 列表类 有一些 方法
  • 对象 object
    • 是 某个类的 实例对象
    • instance object
代码语言:javascript
复制
nl.sort()
cl.sort()
  • 各调各的
  • 列表中 列表项的类型
    • 可以 不同 吗?

来试试

  • 两个列表项
    1. 字符串
    2. 整形
代码语言:javascript
复制
lst = ["oeasy",123]
lst[0]
lst[1]
type(lst[0])
type(lst[1])
  • 类型 还是列表
图片描述
图片描述
  • 列表项 是 不同类型的话
    • 还能 排序 吗??

排序(sort)

代码语言:javascript
复制
lst = ["oeasy", 123]
lst.sort()
  • TypeError
    • int 和 str
    • 比不了大小
图片描述
图片描述
  • 咋理解?

简化

  • 简化之后
代码语言:javascript
复制
"oeasy" < 123
  • 整型变量 和 字符串变量
    • 一个 是 名字
    • 另一个 是 体重
    • 驴唇不对马嘴
图片描述
图片描述
  • 比不了 大小
    • 也就 排不了序

总结

  • 这次我们了解
    • 列表排序
      • 原地 完成
      • in-place
图片描述
图片描述
  • 排序规则 依赖于 列表项类型

数据类型

比较规则

数字型

基于数字直接比

字符串

转化为ASCII码

  • 我就想让 字符串 和 数值 一起排序
    • 有可能吗?
  • 下次再说 👋

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

目录
  • 列表 - 排序 - order
    • 回忆
      • 帮助
      • 排序
      • 翻转
      • 词源
      • 寻求帮助
      • 效果
      • 字符列表
      • 字符串
      • 字符串比较
      • 挨个比较
      • 时间复杂度
      • Big O Notation
      • 优化
      • 参数细节
      • self
      • 来试试
      • 排序(sort)
      • 简化
      • 总结
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档