show | version | enable_checker |
---|---|---|
step |
1.0 |
true |
- 上次了解了count的词源
- count是列表中的计数函数
- 列表 还可以进行什么操作 吗?🤔
- 搜索在线帮助
- https://docs.python.org
- 搜索 list
- 索引
- 得到第 i 个元素
- 中括号里有冒号是什么意思?
- 说是叫做切片(slice)
num_list = list(range(5))
num_list
- 切片有两个端点
- 始点
- 结束点
- 前闭后开
- 开始点是包括的
- 结束点是不包括的
- 前闭后开
- 所以结果是[1, 2]
- 究竟什么是切片呢?
- 直播3小时
- 切出其中的一段视频
- 这就是视频切片
- 这个词怎么来的呢?
- 好几个单词同源
- slit
- slice
- split
- splinter
- 都是撕裂切开
- 把一个整体切分成一个个切片
- 就像切片面包
- 切出其中一段
- 可以切得厚一点么?
- 可以像吃鱼一样吗
- 切头去尾?
- 切头
- 0可以省略
char_list = list("oeasy")
char_list
char_list[0:3]
char_list[:3]
- char[0:3]
- 就是char_list[:3]
- start如果为0可省
- 从头开始
- 尾可省吗?
- 由于切片数字要求是前闭后开
char_list = list("oeasy")
char_list
char_list[2:5]
char_list[2:8]
char_list[2:]
- 结束位置
- 如果是列表长度
- 或者大于等于长度
- 或者省略
- 都可以切下尾巴
- 中间怎么切呢?
- 还是像以前一样
char_list = list("oeasy")
char_list
char_list[1:3]
char_list[2:3]
char_list[2:4]
- 控制
- 开始点
- 结束点
- 前闭后开
- 如果字符串列表中 出现转义字符
- 应该如何呢?
char_list = list("o\ne\tasy")
char_list[1]
char_list[4]
char_list[1:4]
- 转义转义转换含义
- 转义字符仍然是一个字符
- 不影响索引和切片
- 切片支持负数作为端点吗?
num_list = list(range(5))
num_list
- 对应序号
- 将负数当成正数来看就可以了
- 但有一个问题
- 好像最后一片面包4
- 就是拿不到?
- 怎么办?🤔
- stop用正数可以解决问题
- 如果我就想用负数呢?
-
后面是一个开区间
- 无论多么努力都是不包含在内的
-
干脆松手
- 反而得到了
- 既然 stop 可以空
- 那么 start 可以空么?
- 都可以空
- 前面 空 就是要鱼头
- 后面 空 就是要鱼尾
- 前面后面 空 要整条
- 空生万有
- 这个切片操作会对原来的列表有影响么?
- 列表的切片还是列表
- 列表不会因为切片而变化
- 但如果我对切片赋值呢?
- 影响切片就是在影响整个列表
- 这过程中发生了什么呢?
- 用id观察地址
num_list = list(range(5))
print(num_list)
print(id(num_list))
num_list_slice = num_list[2:]
print(num_list[2:])
print(id(num_list[2:]))
num_list[2:] = [5, 6]
print(num_list[2:])
print(id(num_list[2:]))
print(num_list)
print(id(num_list))
- 列表的地址没有变
- 列表切片的地址也没有变
- 但是从l[2:]这个切片开始后面变了
num_list = list(range(5))
num_list[3:] = ['a', 'b']
num_list
- 嫁接技术
- 砧木是[0, 1, 2, 3, 4]
- 接穗是['a', 'b']
- 这是嫁接到尾巴上
- 可以在前面嫁接吗?
num_list = list(range(5))
num_list[:3] = list("oeasy")
num_list
- 尝试把前面换了
- 车头也可以换
- 换的时候数量不对等可以吗?
- 车厢节数 不影响车厢对接过程
- 尾巴上修改也一样吗?
num_list = list(range(5))
num_list[:2] = ["egg"]
- 留下前两片
- 后面加鸡蛋
- 可以夹着吃吗?
- Tuna sandwich
- 替换 找到中间面包
- 可以来个双层牛肉堡吗?
- 先来一层
- 再来一层
- 下面牛肉切的有点碎
- 双层牛肉
- 能否使用0、1 两片面包
- 制作一个双层牛肉堡呢?
- 可以把原来的东西去了
- 然后把新的夹心放进去
- 能否保留目前面包片
- 直接把新夹心放进去呢?
- l[1:1] 是一个 空列表
- 空列表也可以被替换
- 试试双层汉堡
num_list = list(range(3))
- 留三片面包
- 最后的牛肉怎么放?
- 交给你了!
- 这次我们了解了
- 切片操作
- 切片和索引有点像
- 索引得到的是一个列表项
- 切片得到的是一个列表
- 里面有很多列表项
- 切片主要有2个端点
- 这两个端点本质上都是索引值
- 开始 包括在内
- 结束 不包括在内
- 前闭后开
- 列表切片 有什么具体应用呢?🤔
- 下次再说 👋