show | version | enable_checker |
---|---|---|
step |
1.0 |
true |
- 我们上次研究了计数函数count
- 可以统计列表中某个列表项出现的次数
- 也可以统计某字符在字符串中出现的次数
- count与len不同
- count统计某个列表项的出现次数
- len统计整个列表的长度
- split方法把字符串切成列表
- 有什么方法可以切列表的吗?🤔
- 搜索在线帮助
- https://docs.python.org
- 搜索 list
- 索引
- 得到第 i 个元素
- 中括号里有冒号是什么意思
- 说是叫做切片(slice)
- 试试看
- 切片有两个端点
- 开始点
- 结束点
- 这两个点都可以索引到
- 前闭后开
- 开始点是包括的
- 结束点是不包括的
- 前闭后开么!
- 所以结果是['e', 'a']
- 究竟什么是切片呢?
- 感觉好几个单词同源
- slit
- slice
- split
- splinter
- 把一个整体切分成一个个切片
- 就像切片面包
- 整体是一个列表
- 可以切得厚一点么?
- 可以像吃鱼一样吗
- 切头去尾?
- 切头
- 0可以省略
- 去尾
- 由于切片数字要求是前闭后开
- 结束位置
- 如果是列表长度
- 或者大于等于长度
- 或者省略
- 都可以要尾巴
- 中间怎么切呢?
- 还是像以前一样
- 有
- 开始点
- 结束点
- 前闭后开
- 有
- 如果字符串中出现需要转义的字符应该如何呢?
- 转义转义转换含义
- 本质上转义字符也是一个字符
- 不影响索引和切片
- 切片支持负数作为端点吗?
- 将负数当成正数来看就可以了
- 但有一个问题
- 好像最后一片面包就是拿不到?
- 怎么办?
- 松手
- 后面是一个开区间
- 无论多么努力都是不包含在内的
- 干脆松手
- 反而得到了
- 既然 stop 可以空
- 那么 start 可以空么?
- 空生万有
- 都可以空
- 前面可以空
- 后面可以空
- 前面后面都可以空
- 这个切片操作会对原来的列表有影响么?
- 列表的切片还是列表
- 列表不会因为切片而变化
- 但如果我对切片赋值呢?
- 影响切片就是在影响整个列表
- 这过程中发生了什么呢?
- 用id观察地址
- l的地址没有变
- 但是从l[2:]这个切片开始后面变了
- 这有点像移花接木
- 嫁接技术
- 砧木是[1,2,3,4,5]
- 接穗是['a', 'b']
- 这是嫁接到尾巴上
- 可以在前面嫁接吗?
- 车头也可以换
- 换的时候数量不对等可以吗?
- 都可以的
- 就是添几节车厢
- 可以把车厢放在中肚上吗?
- 可以把原来的东西去了
- 然后把新的夹心放进去
- 能否不去掉原来的夹心
- 直接把新夹心放进去呢?
- 也可以的
- l[1:1] 是一个 空列表
- 空列表也可以被替换
- 这次我们了解了切片操作
- 切片和索引有点像
- 索引得到的是一个列表项
- 切片得到的是一个列表
- 里面有很多列表项
- 切片主要有2个端点
- 这两个端点本质上都是索引值
- 开始 包括在内
- 结束 不包括在内
- 列表切片具体有什么应用呢?🤔
- 下次再说 👋