Skip to content

Latest commit

 

History

History
298 lines (187 loc) · 6.61 KB

087-192294-列表_切片_slice_开始_结束.sy.md

File metadata and controls

298 lines (187 loc) · 6.61 KB
show version enable_checker
step
1.0
true

列表 - 切片 - slice

回忆

  • 我们上次研究了计数函数count
    • 可以统计列表中某个列表项出现的次数
    • 也可以统计某字符在字符串中出现的次数
  • count与len不同
    • count统计某个列表项的出现次数
    • len统计整个列表的长度

图片描述

  • split方法把字符串切成列表
  • 有什么方法可以切列表的吗?🤔

帮助

图片描述

  • 索引
    • 得到第 i 个元素
    • 中括号里有冒号是什么意思
    • 说是叫做切片(slice)
  • 试试看

切片 slice

  • 切片有两个端点
    • 开始点
    • 结束点
    • 这两个点都可以索引到

图片描述

  • 前闭后开
    • 开始点是包括的
    • 结束点是不包括的
    • 前闭后开么!
    • 所以结果是['e', 'a']
  • 究竟什么是切片呢?

切片词源

  • 感觉好几个单词同源
    • slit
    • slice
    • split
    • splinter

图片描述

  • 把一个整体切分成一个个切片
  • 就像切片面包

图片描述

  • 整体是一个列表
  • 可以切得厚一点么?

切片

图片描述

  • 可以像吃鱼一样吗

图片描述

  • 切头去尾?

切头

图片描述

  • 切头
    • 0可以省略

图片描述

去尾

  • 由于切片数字要求是前闭后开

图片描述

  • 结束位置
    • 如果是列表长度
    • 或者大于等于长度
    • 或者省略
  • 都可以要尾巴

图片描述

  • 中间怎么切呢?

切鱼

  • 还是像以前一样

图片描述

  • 控制
    • 开始点
    • 结束点
    • 前闭后开

图片描述

  • 如果字符串中出现需要转义的字符应该如何呢?

需要转义的字符

  • 转义转义转换含义

图片描述

  • 本质上转义字符也是一个字符
  • 不影响索引和切片
  • 切片支持负数作为端点吗?

尝试

图片描述

  • 将负数当成正数来看就可以了
  • 但有一个问题

图片描述

  • 好像最后一片面包'y'就是拿不到?
  • 怎么办?

松手

  • 松手

图片描述

  • 后面是一个开区间
    • 无论多么努力都是不包含在内的
  • 干脆松手
    • 反而得到了
    • 既然 stop 可以空
  • 那么 start 可以空么?

  • 前面空就是要鱼头

图片描述

  • 都可以空
    • 前面可以空
    • 后面可以空
    • 前面后面都可以空
  • 空生万有
  • 这个切片操作会对原来的列表有影响么?

列表切片

  • 列表的切片还是列表

图片描述

  • 列表不会因为切片而变化
  • 但如果我对切片赋值呢?

给切片赋值

图片描述

  • 影响切片就是在影响整个列表
  • 这过程中发生了什么呢?

过程

  • 用id观察地址

图片描述

  • l的地址没有变
  • 但是从l[2:]这个切片开始后面变了
    • 这有点像移花接木

图片描述

  • 嫁接技术
    • 砧木是[1,2,3,4,5]
    • 接穗是['a', 'b']
    • 这是嫁接到尾巴上
  • 可以在前面嫁接吗?

接在前面

  • 车头也可以换

图片描述

  • 换的时候数量不对等可以吗?

数量不对等

  • 都可以的

图片描述

  • 就是添几节车厢
  • 尾巴上修改也一样吗?

尾巴

图片描述

  • 留下前两片

    • 后面加黄油和鸡蛋
  • 可以夹着吃吗?

金枪鱼三明治

  • Tuna sandwich

图片描述

  • 找到中间面包

图片描述

  • 可以来个双层堡吗?

双层

图片描述

  • 找到前面和后面的位置

图片描述

  • 双层牛肉
  • 能否使用0、1、2 三片面包
    • 制作一个双层牛肉堡呢?

夹心

  • 可以把原来的东西去了
    • 然后把新的夹心放进去

图片描述

  • 能否不去掉原来的夹心
  • 直接把新夹心放进去呢?

塞入夹心

  • 也可以的

图片描述

  • l[1:1] 是一个 空列表
    • 空列表也可以被替换

三块面包

图片描述

  • 留三片面包

图片描述

  • 加入汉堡

总结

  • 这次我们了解了切片操作
    • 切片和索引有点像
    • 索引得到的是一个列表项
    • 切片得到的是一个列表
      • 里面有很多列表项
  • 切片主要有2个端点
    • 这两个端点本质上都是索引值
    • 开始 包括在内
    • 结束 不包括在内

图片描述

  • 列表切片具体有什么应用呢?🤔
  • 下次再说 👋