序列
定义:为满足程序中复杂的数据表示,Python支持组合数据类型,可以将一批数据作为一个整体进行数据操作,这就是数据容器的概念。容器中可包含多个数据(元素),容器中的数据(元素)有先后次序,每个元素通过用其下标(索引)来访问。序列的下标从0开始,后面下标依次为1,2,3,…序列是其中一大类数据容器的统称,不是具体的数据类型。
Python中包含6种内建的序列,如列表,元组,字符串,Unicode字符串,buffer对象和xrange对象。
通用的序列操作:
- 索引(访问单个数据)
用[]来访问序列中的一个元素。
假如序列中的元素个数是n,下标的有效范围是0到n-1,或-1到-n。如果下标的绝对值大于n-1,则会发生下标越界错误。如果下标的值为负数,表示从序列的最后一个元素往前引用:
>>> a='hello'
>>> a[0]
'h'
>>> a[-1]
'o'
>>> a[-5]
'h'
- 分片(访问一部分数据)
切片通过冒号分隔两个下标来实现
>>> a=[2,3,5,7,11,13]
>>> a[1:3]
[3, 5]
#切片a[1:3]表示包含从第1个下标(1)开始到第2个下标(3)前面的下标(2)为止的部分元素的子序列(列表).
>>> a[1:-3]
#切片使用负的下标访问。
[3, 5]
>>> a[2:]
#切片省略第2个下标,表示从第1个下标的元素开始到最后一个元素的切片。
[5, 7, 11, 13]
>>> a[:3]
#第1个下标为0时,可以省略。
[2, 3, 5]
>>> a[:-2]
[2, 3, 5, 7]
>>> a[0:5:2]
#切片使用第3个参数,该参数表示切片选择元素的步长。
[2, 5, 11]
>>> a[-1:0:-1]
#切片使用第3个参数为负数时,表示逆向取切片。
[13, 11, 7, 5, 3]
>>> a[::-1]
[13, 11, 7, 5, 3, 2]
- 复制一个序列
如果将一个序列变量赋值给另外一个变量,则这两个变量表达了同一个序列。
>>> a=[2,3,5,7,11,13]
>>> b=a
>>> b[0]=1
>>> a
[1, 3, 5, 7, 11, 13]
如果希望2个变量各自拥有独立的序列,可使用切片。
>>> a=[2,3,5,7,11,13]
>>> b=a[:]#表示从头到尾的整个序列“切”出来的序列。
>>> b
[2, 3, 5, 7, 11, 13]
>>> b[0]=1
>>> a
[2, 3, 5, 7, 11, 13]
>>> b