索引(Indexing)
序列中每一个元素都有一个编号,也称为索引,但这里我们先不说序列的概念,现在我们主要以字符串为例来介绍索引这个概念
假如有一个字符串 ABCDEFG
索引时从0开始递增的,也就是说 A的编号就是0,B的编号就是1,按这样的顺序编号递增
即下标为0表示第一个元素,下标为1表示第二个元素
Python比较神奇,它的索引可以是负数,这个索引从右向左计数,也就是从最后一个元素开始计数,即最后一个元素的索引值为-1,倒数第二个元素的索引值为-2,依次类推
元素 | A | B | C | D | E | F | G |
索引 | 0 | 1 | 2 | 3 | 4 | 5 | 6 |
索引 | -7 | -6 | -5 | -4 | -3 | -2 | -1 |
大家了解了索引这个东西,那么我们现在就来介绍一个比较重要的概念:切片
切片操作是反问序列中元素的另一种方法,同样的,我们先不说序列这个东西,我们还是以字符串为例,切片操作也是可以访问字符串的
切片操作可以访问一定范围内的元素。通过切片操作可以生成一个新的序列
其语法格式如下和参数如下:
sname[start:end:step]
sname:表示序列的名称
start: 表示切片的开始位置,(包括该位置),如果不指定,默认为0
end: 表示切片的截止位置,(不包括该位置),如果不指定则默认截止到最后一个元素(包括该元素)
step:表示切片的步长,如果省略,则默认为1,当省略该步长时:最后一个冒号可以省略
例如:截取字符串ABCDEFG中的BCDEF
s = 'ABCDEFG'
print(s[1:6:1])
print(s[1:6]) #可以省略步长
print(s[1:-1])
print(s[-6:-1])
由上述代码可见,只要我们切片开始的位置和截止位置是对应的索引就可以了
还有一个要注意的东西是:字符串变量默认是从左向右一个一个取元素
但是也可以从右向左取
step不仅决定了步长,还决定了取元素的方向
当step 为正数时 从左向右取元素
当step 为负数时 从右向左取元素
代码如下
s = 'ABCDEFG'
print(s[-1:-8:-1]) #注意,起始位置和截止位置方向应该跟step方向一样
print(s[6::-1])