索引(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])