列表_切片赋值_slice_assignment_嫁接
回忆
- 上次我们了解了
- 切片操作
- 切片和索引 有点像
- 索引得到的是
一个列表项
- 切片得到的是
列表项的列表
- 切片 主要 有2个端点
- 这两个端点 负责 位置
- start 开始 包括在内
- stop 结束 不包括在内
- 前闭后开
- 可以通过 切片 改变原列表吗??🤔
给切片赋值
- 把nlist的尾巴 给换了
nlist = list(range(5)) nlist nlist[2:] nlist[2:] = [5, 6] nlist
- 对列表切片赋值之后
- 原列表 就改变了
- 发生了什么呢?
过程
- 用id观察地址
nlist = list(range(5)) print(nlist) print(id(nlist)) nlist_slice = nlist[2:] print(nlist[2:]) print(id(nlist[2:])) nlist[2:] = [5, 6] print(nlist[2:]) print(id(nlist[2:])) print(nlist) print(id(nlist))
- 列表的 地址 没变
- 列表切片的 地址 也没变
什么
变了呢?
移花接木
- nlist[2:]
- 切片里面的东西 变了
- 嫁接技术
- 砧木是[0, 1, 2]
- 接穗是['a', 'b']
nlist = list(range(5)) nlist nlist[3:] = ['a', 'b'] nlist
- 这是嫁接 到 列表尾巴 上
- 可以 在头上 嫁接 吗?
接在前面
nlist = list(range(8)) nlist[:4] = list("oeasy") nlist
- 尝试把车头换了
- 换的时候 数量 可以 不对等?
数量不对等
- 尝试
nlist = list(range(5)) nlist nlist[:2] = "oeasy" nlist
- 车厢节数 不影响 对接
- 找到位置
- 接上 就行
- 在 尾部 接上 也一样吗?
尾巴
nlist = list(range(5)) nlist nlist[2:] nlist[2:] = ["egg"] nlist
- 留下 前两片
- 后面 加 鸡蛋
- 想把 鸡蛋 夹在
- 两片面包之间
夹鸡蛋
- 怎么办?
接在中间
nlist = list(range(5)) nlist nlist[1:4] nlist[1:4] = ["fish"] nlist
- Tuna sandwich
- 替换 找到中间面包
- 可以来个双层牛肉堡吗?
双层
nlist = list(range(5)) nlist nlist[1:2] nlist[1:2] = ["beef"] nlist
- 先来牛排
- 注意这个牛排 是整个的
第二片牛肉
- 第二片牛肉切成条
nlist nlist[3:4] nlist[3:4] = list("beef") nlist
- 再放进去
- 成功
新需求
- 开局
- 使用0、1 两片面包
- 双层牛肉
- 制作一个牛肉堡呢?
夹心
nlist = list(range(2)) nlist
- 面包片 已完成
- 怎么 把新夹心放进去呢?
塞入夹心
- 找到位置
nlist nlist[1:1] nlist[1:1] = "beef"
- nlist[1:1]切片
- 是一个 空列表
- 空列表 也可以 被替换
双层牛堡
- 开局三片面包
- 要做双层牛堡
三块面包
- 初始状态
- 三片面包
nlist = list(range(3)) nlist nlist[1:1] nlist[1:1] = ["beef"] nlist
- 最后 还能
- 加点 西红柿吗?
- 交给你 来制作 了!
总结
- 这次 对切片 赋了值
- 新切片
- 可以 接到 头上
- 也可以 接到 尾巴上
- 还可以 接到 中间
- 字符串 也可以 进行切片 吗??🤔
- 下次再说 👋