Skip to content

Latest commit

 

History

History
220 lines (146 loc) · 4.85 KB

093-192295-列表_排序_sort_比较大小.sy.md

File metadata and controls

220 lines (146 loc) · 4.85 KB
show version enable_checker
step
1.0
true

列表 - 排序 - order

回忆

  • 上次我们了解了列表的乘法运算
  • 我们总结一下各种运算
  • 赋值运算
    • 直接用列表赋值
      • 直接使用列表地址
      • 两个列表指向同一位置
    • 制作副本的3种方法
      • copy拷贝
      • list构造
      • slice切片
  • 加法
    • l1 = l1 + l2
    • l1 += l2
    • l1[-1:] = l2
    • l1.extend(l2)
  • 乘法
    • 乘法的本质是累加
    • 规则和加法类似
    • 但是数据特别大时候会抛出异常
  • 列表还有什么好玩的吗?🤔

继续查帮助

  • 在切片之后
  • 有 max 和 min

图片描述

  • 这题我会🙋
    • 最大最小值

最大最小值

  • max 得到最大值
  • min 得到最小值

图片描述

  • 可以去掉一个最高分
  • 去掉一个最低分
  • 再求平均分吗?

平均得分

  • 去奢去甚去泰

图片描述

  • 尝试

图片描述

  • 字符列表可以得到最大最小值么?

字符列表

  • 最大最小

图片描述

  • 也可以
    • 看起来大小是由 ascii 码的值决定的
  • 既然可以有最大最小
    • 就应该可以排序
    • 有排序这个函数吗?
  • 好像还真有

帮助

图片描述

  • 动手试试

排序

  • 列表对象直接调用 sort 函数
    • 函数返回值为 None

图片描述

  • 列表本身排序了
    • 按照升序排列
    • 如果我想降序呢?

翻转

  • 这里也有 self 这个默认第一个参数

图片描述

  • reverse 函数可以让列表首尾翻转

图片描述

  • 这个函数可以对字符列表用么?

字符列表

图片描述

  • 对于字符串作为列表项
  • 可以排序么?

字符串

  • 看起来是可以的
  • 排序方法是按照字符顺序
    • 也就是 ascii 的 ord()顺序

图片描述

  • 挨个比较
    • 先看第一个
      • 都是'o'
    • 再看第二个
      • 比较 ascii 的值
      • '2' < '3' < 'e'
  • 我想按照长度进行排序
  • 可以么

参数细节

  • 可以给函数合适的参数
    • 第一个参数是self
    • 第二个参数是key
    • key就是排序的方法

图片描述

  • key 是排序方法
    • len 是按照字符串长度排序
    • len 函数观察每个列表项
    • 作为排序的依据

图片描述

  • 第三个参数 reverse 是什么意思?

reverse

  • reverse 是 是否翻转

图片描述

  • 默认是 False 不翻转
    • '2' < '3' < 'e'
  • 如果是 True 就翻转
    • 'e' > '3' > '2'

图片描述

  • 如果列表项是不同类型的话
    • l = ["oeasy",123]
    • 可以吗?

来试试

图片描述

  • 列表项可以是不同类型的东西
  • 类型确实还是列表

图片描述

  • 这样的列表也可以进行赋值么

赋值

  • 像正常列表一样
    • 两个列表变量引用 堆(heap) 中同一个地址

图片描述

  • 那这样的列表也可以排序吗?

排序(sort)

  • 数字和字符串无法比较大小

图片描述

  • 整型变量和字符串变量无法进行比较

图片描述

  • 因为无法区分大小
    • 所以排序失败
  • 先去总结一下

总结

  • 这次我们了解了排序
    • 排序是在原列表上做的
    • 按照不同列表项类型排序
      • 字符串
        • 字符序号
        • 字符串长度
      • 数字型
        • 数字大小
    • 可以递增也可以递减
      • 参数reverse=True

图片描述

  • 排好序之后列表就是有序列表了
    • 向有序列表插入列表项就讲究位置了
  • 具体怎么插入呢?🤔
  • 下次再说 👋