5. 索引&切片

212 阅读3分钟

一,名词理解

1,索引

在一本书里面,想要去找到某个章节在某页,最快的方法一般是通过目录去找到对应的章节名然后再看页数,这个过程就叫索引。类似的,在某个序列中,也是有类似的方法去快速定位到这个序列中的某个元素,这就是索引的方法

2,切片

切片就可以理解成,不只是去找到某一个元素,而是把这个序列中的很多个元素给一起拿出来。

3,序列

序列的意思可以理解成所存信息成一定顺序的集合,python中标准数据类型里是序列的有:字符串、列表、元组

二,序列索引

分正向索引和反向索引,共同存在。正向索引从0开始,依次递增;反向索引从-1开始,依次递减。 像一个内容为 "Hello 1牛3 Python"的字符串,里面各字符对应索引,用图来表示如下: 图1

实例:给一个字符串,内容为‘Hello,chick’,输出它的索引为4和-7的内容

Chic = ‘Hello,chick’
print(Chic[4] , Chic[-7])

输出

o o

如上实例所示,想拿出对应序列索引的内容,以**序列名[索引号]**的方式即可,如Chic[4]

三,序列切片

切片顾名思义就是从原有序列中切出某个片段,是结合索引进行操作的,具体格式如下:

起始索引:结束索引:步长

  • 逻辑:从起始索引开始(包括),到结束索引为止(不包括),以给定步长拿出元素,如
Chic = 'Hello,chick'
print(Chic[4:6])

输出

o,
  • 起始索引没指定,默认为0(步长为正数),从第一个元素开始;结束索引没指定,默认为序列的长度,如
Chic = 'Hello,chick'
print(Chic[:6])
print(Chic[4:])
print(Chic[:])

输出

Hello,
o,chick
Hello,chick
  • 步长不写,默认为1,可以为负数(此时注意结束索引要在起始索引的左边,正负表示都可),代表按从右到左的顺序去取元素,如
Chic = 'Hello,chick'
print(Chic[-1:0:-2]) #此时步长为-2,所以起始索引为-1(同10),结束索引为0

输出

kicolH

四,索引和切片在数据上的区别

正如名字所定义的,一个是从原序列中取出某个元素,一个是将原序列切几刀得到我们想要的片段,两个的处理方式上有一个特别需要注意的就是:索引会降维,切片不会降维 如下例:

list1 = [123, "e", "l", "l", "o", " ,", "C","h", "i", "c", "k"]
print(list1[0])
print(list1[:1]) 

输出

123
[123]

可看到索引得到列表里面的一个元素, 123是整数类型;切片得到了列表的一个子列表, 它还是列表类型, 这个列表里面有一个整数类型的元素 123,也就是所谓的索引会降维,切片不会降维

这句话在后面的多维数组的处理时,是经常需要考虑到的,原理都可以用这句话来表示

涉及数据维度升维介绍 标量 -> 向量 -> 矩阵 -> 张量

五,涉及内置函数

len(s)

  • 作用:返回传入s的长度(元素个数),s可为序列,也可为集合
Chic = 'Hello,chick'
print(len(Chic))

输出

11