字符串的切片和索引
在Python内,字符串可以被多种关键字所调用也可被用来切片,不过需要注意的是,因为字符串是不可更改的类型,关键字和切片的操作并不会改变字符串本身,而是将操作后的值以赋值或者其他形式输出,原字符串不变。
切片
已知字符串x,字符串内每一个单独的字符都有一个属于的索引下表,这个索引下标从左往右由0开始递增。
a='qwertyuiooooooop'
b=a[1:5:1]#括号里的参数分别代表起始索引编号,结束索引编号,递增步长
print(b) #out:wert
以上案例中将字符串中某一段输出的方式便称之为切片,切片的起始可以是正数也可以是负数,递增步长可以不填写,不填写时默认为1,需要注意的是,切片的值输出时是不包含结束索引所对应的字符的,即由起始索引开始一直到结束索引的前一位结束
a='qwertyuiooooooop'
b=a[1:-1]#括号里的参数分别代表起始索引编号,结束索引的-1代表最后一个,递增步长
print(b) #out:wertyuiooooooo
a='qwertyuiooooooop'
b=a[1:-1:2]#括号里的参数分别代表起始索引编号,结束索引的-1代表最后一个,递增步长为2
print(b) #out:wryiooo
在Python内,如果一个字符串一共有5个字符组成,从左开始第一位字符的下标索引为0,那么当下标递增至第五位字符时,第五位的下标为4,从数学角度来理解,也就是最后一位的下标等于字符串的字符个数减一,我们一般成为字符串的字符个数为字符串长度,Python内由关键字len进行引用,例如
a='asd'
print(len(a))#len()用于计算字符串的长度,所以这里显示的结果为3,那么字符串的索引下标则是[0,len(a))的半闭半开区间。
此外,字符串索引也可以从最后一位开始,从最后一位开始时,最后一位的下标为-1
a='abcdefghijk'
print(a[-1:-4:-1])#递增步长为-1,这里的步长不能使用默认值,但并不是说有负数的情况就不能空着步长,而是这个案例的情况不行,当使用负数索引时,索引值的范围为[-1,-len(a)]的全闭区间。
a='abcdefghijk'
print(a[-9:7])#这里则是省略步长,默认1,而且可以正常输出 out:cdefg
特例
a='qwertyuiooooooop'
b=a[::-1]#如果起始不填索引值,则默认从第一位开始,结尾不填写索引值,则默认为直至结束为止,递增为-1,指代倒叙。
print(b) #out:poooooooiuytrewq
切片原理解析
为什么递增步长填-1会是逆序输出呢?起始切片本质上来说是个循环输出的应用,以以下案例引入