3.1.1 索引
序列是Python中最基本的数据结构。序列中的每个元素都有一个数字下标,代表它在序列中的位置,这个位置就是索引。
在序列中,第一个元素的索引下标是0,第二个元素的索引下标是1,以此类推,直到最后一个元素。
比如上面“序列号”大巴的所有同学,就已经被分配了从0到30的索引下标。我们也可以称Python快乐学习班的所有同学已经组成了一个序列,每个同学的序号代表了他在序列中的位置。
序列中所有元素都是有编号的,从0开始递增。可以通过编号分别对序列的元素进行访问。
比如对于“序列号”大巴上的第二组的成员,他们的序号分别是5、6、7、8、9,将这5个序号放在一个字符串中,该字符串赋给变量group_2,意为第二组。
现对group_2做如下操作:
>>> group_2='56789'#定义变量group_2,并赋值56789 >>> group_2 [0] #根据编号取元素,使用格式为:在方括号中输入所取元素的编号值 '5' >>> group_2 [1] '6' >>> group_2 [2] '7'
由输出结果可以看到,序列中的元素下标是从0开始的,从左向右,从0开始依自然顺序编号,元素可以通过编号访问。获取元素的方式为:在定义的变量名后加方括号,在方括号中输入所取元素下标的编号值。
就如“序列号”大巴上的所有同学,目前已经从0编号到30,每个序号对应一位同学。程序中的序列也是如此。
这里的编号就是索引,可以通过索引获取元素。所有序列都可以通过这种方式进行索引。
提示
字符串本质是由字符组成的序列。索引值为0的指向字符串中的第一个元素。比如在上面的示例中,索引值为0指向字符串56789中的第一个字符5,索引值为1指向字符6,索引值为2指向字符7,等等。
上面的示例是从左往右顺序通过下标编号获取序列中的元素,也可以通过从右往左的逆序方式获取序列中的元素,其操作方式如下:
>>> group_2[-1] '9' >>> group_2[-2] '8' >>> group_2[-3] '7' >>> group_2[-4] '6'
由输出结果可以看到,Python的序列也可以从右开始索引,并且最右边的元素索引下标值为-1,从右向左逐步递减。
在Python中,从左向右索引称为正数索引,从右向左索引称为负数索引。使用正数索引时,Python从索引下标为0的元素开始计数,往后依照正数自然数顺序递增,直到最后一个元素。使用负数索引时,Python会从最后一个元素开始计数,从-1开始依照负数自然数顺序递减,最后一个元素的索引编号是-1。
提示
在Python中,做负数索引时,最后一个元素的编号不是-0,与数学中的概念一样,-0=0,-0和0都指向序列中下标为0的元素,即序列中的第一个元素。
从上面的几个示例可以看到,进行字符串序列的索引时都定义了一个变量,其实不定义变量也可以。下面来看一个例子,在交互模式下输入:
>>> '56789'[0] '5' >>> '56789'[1] '6' >>> '56789'[-1] '9' >>> '56789'[-2] '8'
由输出结果可以看到,对序列可以不定义变量,直接使用索引。直接使用索引操作序列的效果和定义变量的效果是一样的。
读者在实际使用时可以依照个人的习惯操作,但建议读者定义变量,因为定义变量只需要赋一次值,后续直接操作变量即可。
如果函数返回一个序列,是否可以直接对结果进行索引操作呢?在此以input输入函数作为示例,在交互模式下输入:
>>> try_fun=input()[0] test >>> try_fun 't'
这里直接对函数的返回结果进行了索引操作。此处提前引入了函数和input输入函数的概念,稍做了解即可。
注意,使用索引既可以进行变量的引用操作,也可以直接操作序列,还可以操作函数的返回 序列。