序列其实是Python的某几类数据类型的统称,如字符串,列表和元组,将它们统称为序列,是因为:它们的成员有序排列,并且可以通过下标偏移量访问到它的一个或者几个成员。
总结的思路为:先介绍适用于所有序列类型的操作符和内建函数,然后再分别对这几种序列类型进行介绍。
1.序列
序列类型都有相同的访问模式:它的每一个元素都可以通过指定一个偏移量的方式得到,多个元素通过切片操作的方式得到。而在Python序列中,偏移量的规则如下(假设序列长度为N):
(1)标准类型操作符
在《Python回顾与整理2:Python对象》中有介绍标准类型操作符,这些操作符一般都是可以适用于所有的序列类型的。
(2)序列类型操作符
分别介绍如下:
-
成员关系操作符:in,not in
对于字符串,就是判断字符是否在字符串中(其实这个字符也是一个字符串对象);对于列表和元组,就是判断对象是否属于该对象序列,语法为:obj [not] in 序列
-
连接操作符:+
-
从节约内存的角度去考虑,对于字符串,建议使用join,对于列表,建议使用extend().
-
重复操作符:*
语法为:sequence * copies_int,即数字必须为整型,不能是长整型。
-
切片操作符:[ ],[:],[::]
假设有列表:L = [0, 1, 2, 3, 4],常见的有下面的几种形式操作:
操作 | 结果 |
L或L[:] | [1, 2, 3, 4, 5] |
L[0:3]或L[:3] | [0, 1, 2] |
L[2:5]或L[2:] | [2, 3, 4] |
L[1:3] | [1, 2] |
L[3] | [3] |
通过上表容易知道:如果没有指定起始索引值(即为None),将以第一个索引值作为默认值;同样地,如果没有指定结尾索引值,将以最后一个索引值作为默认值;如果都没有指定,则返回整个序列。
-
切片操作扩展:使用步长索引
使用第3个参数作为步长,如下:
1
2
3
4
5
|
>>> s = 'abcdefgh' >>> s[:: - 1 ] #可以视作翻转
'hgfedcba' >>> s[:: 2 ] #隔一个取一个
'aceg' |
-
切片索引的更多内容
主要看下面一个例子:
1
2
3
4
5
6
7
8
9
|
>>> s |