列表_切片赋值_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
-
最后 还能
-
加点 西红柿吗?
-
-
交给你 来制作 了!
总结
-
这次 对切片 赋了值
-
新切片
-
可以 接到 头上
-
也可以 接到 尾巴上
-
还可以 接到 中间
-
-
-
字符串 也可以 进行切片 吗??🤔
-
下次再说 👋