切片与索引

深度解析字符串、列表、元组的切片运算

对于初学者,切片和索引的概念可能很模糊,所以这里首先解释一下什么是索引与切片!!!
切片:是指对操作的对象截取其中一部分的操作。字符串、列表、元组都支持切片操作。
索引:对于有其他编程语言基础的人就很好理解了,类似于数组中的下表,对于新手可以理解为一串序列他的顺序减一就是它所对应的索引,如下:

str="1,2,3,4,5,6"
#str[0]的值就是1,str[1]的值就是2,以此类推
#索引就是[]中的数字

一个完整的切片包括三部分——[索引首部:索引尾部:切片的步长与方向],当然它也可以不完整,具体的我们看代码解释
首先有一个大家经常忽视掉的重点那就是索引头部到索引尾部是左闭右开的,即:[索引头部,索引尾部)

str="hello,baibai"
#接下来给大家展示一些最常用的切片,请注意思考为什么
print(str[6])#b
print(str[6:11])#baiba

因为左闭右开,所以[6:11]对应的字符串就是’baiba’,但是索引已经到头了呀,那我们想输出’baibai’要怎么样,才可以呢?

print(str[6:12])#baibai
print(str[6:])#baibai

这里为什么能到12呢?

因为字符串的结尾默认是自动加’\0’结尾所以可以到12,并且是不越界的

第二行这种是没有写索引尾部到哪里,所以默认输出到最后一个字符;

同时如果没有写索引首部,那我们也是默认从第一个字符开始的;

print(str[:6])#hello,
print(str[:])#hello,baibai

上面第二行代码,’ : '两边都没有数字那我们就可以省略掉了

学而不思则妄,如果你从头是仔细阅读过来的那你肯定已经掌握关于切片的基础了,可以思考一下下面代码为什么输出的是这样子的,等你都想通后,你就已经成功掌握字符串的索引与切片了!

print(str[-1])#i
print(str[:-1])#hello,baiba
print(str[::-1])#iabiab,olleh
print(str[::2])#hlobia

如果你知道了上面的代码为什么这样,那你是不是同我一样有一个逆置输出的想法呢?废话不多说,上代码

str="我爱你"
#有细节 注意思考!!!!!!!!!
print(str[4::-1])#你爱我

最开始提到了,列表和元组都支持切片,那我们接下来就看看,列表与元组的切片如何实现吧!

不是吧!!!都看完字符串的切片了,还看列表与元组的切片??为了不要太枯燥我们看一下一个"复杂"的切片

#这里直接应用,我昨天作业的一个数据
goods=[(1,"百事可乐",10,3),(2,"康师傅方便面",15,2),(3,"马克杯",5,30)]
print(goods)#[(1, '百事可乐', 10, 3), (2, '康师傅方便面', 15, 2), (3, '马克杯', 5, 30)]
print(goods[1])#(2, '康师傅方便面', 15, 2)
print(goods[1:])#[(2, '康师傅方便面', 15, 2), (3, '马克杯', 5, 30)]
print(goods[0][1])#百事可乐
print(goods[0][1::-1])#('百事可乐', 1)

以大家的IQ,相信看完就已经懂了,而且以此类推,相信大家以后对切片再无恐惧了!是十分简单的

Ps:这是我的学习笔记,发出来是给自己看的,如果哪里有错误或者需要补的地方,希望大家指点指点,重谢!!!