众力资讯网

Python 列表切片赋值教程:掌握 “移花接木” 式列表修改技巧

列表_切片赋值_slice_assignment_嫁接回忆上次我们了解了切片操作切片和索引 有点像索引得到的是 一个列表
列表_切片赋值_slice_assignment_嫁接回忆

上次我们了解了

切片操作

切片和索引 有点像

索引得到的是 一个列表项

切片得到的是 列表项的列表

切片 主要 有2个端点

这两个端点 负责 位置

start 开始 包括在内

stop 结束 不包括在内

前闭后开

可以通过 切片 改变原列表吗??🤔

给切片赋值

把nlist的尾巴 给换了

nlist = list(range(5))nlistnlist[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))nlistnlist[3:] = ['a', 'b']nlist

这是嫁接 到 列表尾巴 上

可以 在头上 嫁接 吗?

接在前面

nlist = list(range(8))nlist[:4] = list("oeasy")nlist

尝试把车头换了

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

数量不对等

尝试

nlist = list(range(5))nlistnlist[:2] = "oeasy"nlist

车厢节数 不影响 对接

找到位置

接上 就行

在 尾部 接上 也一样吗?

尾巴

nlist = list(range(5))nlistnlist[2:]nlist[2:] = ["egg"]nlist

留下 前两片

后面 加 鸡蛋

想把 鸡蛋 夹在

两片面包之间

夹鸡蛋

怎么办?

接在中间

nlist = list(range(5))nlistnlist[1:4]nlist[1:4] = ["fish"]nlist

Tuna sandwich

替换 找到中间面包

可以来个双层牛肉堡吗?

双层

nlist = list(range(5))nlistnlist[1:2] nlist[1:2] = ["beef"]nlist

先来牛排

注意这个牛排 是整个的

第二片牛肉

第二片牛肉切成条

nlist nlist[3:4]nlist[3:4] = list("beef")nlist

再放进去

成功

新需求

开局

使用0、1 两片面包

双层牛肉

制作一个牛肉堡呢?

夹心

nlist = list(range(2))nlist

面包片 已完成

怎么 把新夹心放进去呢?

塞入夹心

找到位置

nlistnlist[1:1]nlist[1:1] = "beef"

nlist[1:1]切片

是一个 空列表

空列表 也可以 被替换

双层牛堡

开局三片面包

要做双层牛堡

三块面包

初始状态

三片面包

nlist = list(range(3))nlistnlist[1:1]nlist[1:1] = ["beef"]nlist

最后 还能

加点 西红柿吗?

交给你 来制作 了!

总结

这次 对切片 赋了值

可以 接到 头上

也可以 接到 尾巴上

还可以 接到 中间

新切片

字符串 也可以 进行切片 吗??🤔

下次再说 👋