在Python中,序列类型包括字符串(普通字符串和unicode字符串)、列表和元组,所谓序列,即成员有序排列,并且可以通过下边偏移量访问到它的一个或者几个成员。假设序列有n个元素,访问单个元素时,下标从0开始,到n-1结束,如果是逆序访问,下标从-1开始,到-n结束,切片操作支持多个元素的访问。
序列类型支持如下操作符——
in/not in:成员关系操作符,返回True或False。
obj [not] in sequence:判断obj元素是否(不)属于sequence序列。
+:连接操作符,但是这个操作不是最快或者说最有效的,对字符串来说,这个操作不如把所有的字符串放到一个列表或可迭代对象中,然后调用一个join方法把所有的内容连接在一起以节约内存,类似地,对列表来说,用列表类型的extend()方法把两个或者多个列表对象合并。
sequence1 + sequence2:连接两个同类型序列。
*:重复操作符
sequence * copies_int:sequence序列重复copies_int次。
[]、[:]、[::]:切片操作符
sequence[index]:访问单个元素。
sequence[starting_index:ending_index]:访问始末下标间的元素,支持None作为索引值,等同于不指定这个索引值。
sequence[starting_index:ending_index:step]:访问始末下标间的元素,指定元素间的步长,支持None作为索引值,等同于不指定这个索引值。
序列类型可用如下内建函数——
list(iter):把可迭代对象转换为列表。
str(obj):把obj对象转换为字符串,即用字符串来表示这个对象。
tuple(iter):把一个可迭代对象转换为一个元组。
unicode(obj):把对象转换成Unicode字符串。
basestring():抽象工厂函数,其作用仅仅是为str和unicode函数提供父类,所以不能被实例化,也不能被调用。
enumerate(iter):接受一个可迭代对象作为参数,返回一个enumerate对象,该对象生成由iter每个元素的index值和item值组成的元组。
len(seq):返回seq的长度。
max(iter,key=None)、max(arg0,arg1...,key=None):返回iter或(arg0,arg1...)的最大值,如果指定了key,这个key必须是一个可以传给sort()方法的,用于比较的回调函数。
min(iter,key=None)、min(arg0,arg1...,key=None):返回iter或(arg0,arg1...)的最小值,如果指定了key,这个key必须是一个可以传给sort()方法的,用于比较的回调函数。
reversed(seq):接受一个序列作为参数,返回一个以逆序访问的迭代器。
sorted(iter,cmp=None,key=None,reverse=False):接受一个可迭代对象作为参数,返回一个有序的列表,可选参数cmp、key和reverse和list.sort()内建函数含义一样。
sum(seq,init=0):返回seq和可选参数init的总和,其效果等同于reduce(operator.add,seq,init)。
zip([it0,it1...]):返回一个列表,其第一个元素是it0、it1...这些元素的第一个元素组成的一个元组,其它元素依次类推。
python字符串——
字符串类型是python里面最常见的类型,是不可变类型,支持单引号、双引号、三引号,三引号是一对连续的单引号或者双引号,允许一个字符串跨多行。
字符串连接:前面提到的+操作符可用于字符串连接,还可以直接把几个字符串连在一起写,另外调用join()方法也可以连接字符串。
只适用于字符串连接的操作符:前面提到了一些序列类型共用的操作符,除此之外,字符串还有只属于自己的操作符,包括格式控制操作符%、字符串模板string.Template、原始字符串操作符r/R、Unicode字符串操作符u/U,unicode支持函数
格式化字符串支持如下符号:
%c:转换成字符
%r:优先用repr()函数进行字符串转换
%s:优先用str()函数进行字符串转换
%d、%i:转换成有符号十进制数
%u:转换成无符号十进制数
%o:转换成无符号八进制数
%x、%X:转换成无符号十六进制数
%e、%E:转换成科学计数法
%f、%F:转换成浮点数
%g、%G:浮点数的科学计数法
%%:输出%
*:定义宽度或者小数点精度
-:用做左对齐
+:在正数前面显示加号
空格:在正数前面显示空格
#:在八进制数前面显示0,在十六进制前面显示0x或者0X
0:显示的数字前面填充0而不是默认的空格
m.n:m是显示的最小宽度,n是小数点后的位数
(var):映射变量(字典参数),如'%(a)s %(b)s' % {'a': 'hello', 'b': 'python'}
字符串内建函数包括:capitalize、center、count、decode、encode、endswith、expandtabs、find、index、isalnum、isalpha、indecimal、isdigit、islower、isnumeric、isspace、istitle、isupper、join、ljust、lower、lstrip、pattition、repalce、rfind、rindex、rjust、rpartion、rstrip、split、splitlines、starswith、strip、swapcase、title、translate、upper、zfill等。
下面列举一些与字符串类型有关的模块。
string:字符串操作相关函数和工具,比如Template类。出于性能考虑,尽量使用格式化字符串,而非string模块。
re:正则表达式,强大的字符串模式匹配模块。
struct:字符串和二进制之间的切换。
c/StringIO:字符串缓冲对象,操作方法类似于file对象。
base64:Base16,32,64数据编解码。
codecs:解码器注册和基类。
crypt:进行单方面加密。
difflib:找出序列间的不同。
hashlib:多种不同安全哈系算法和信息摘要算法的API,python2.5废除。
hma:HMAC信息鉴权算法的python实现。
md5:RSA的MD5信息摘要鉴权。
rotor:提供多平台的加解密服务。
sha:NIAT的安全哈系算法SHA。
stringprep:提供用于IP协议的Unicode字符串。
textwrap:文本打包和填充。
unicodedata:Unicode数据库。
python列表——
python列表用方括号[]表示,有容器和可变的特性,这使得它非常灵活,用来构建其它的数据结构不是件难事,比如说堆栈或队列。可以使用dir(list)命令在python交互式解释器上查看列表内建函数,包括append、count、extend、index、insert、pop、remove、reverse、sort。
python元组——
python元组用圆括号()表示,是跟列表非常接近的另一种容器类型,不同的是,元组为不可变类型。所有多对象的、逗号分隔的、没有明确用符号定义的集合的默认类型为元组。对于单元素元祖来说,('xyz')被认为是字符串类型,括号被认为是分组操作符,单元素元祖的正确表示方法是('xyz',),在第一个元素后面添加一个逗号。
下面再列举一些与序列类型有关的模块。
数组:一种受限制的可变序列类型,要求所有的元素必须都是相同的类型。
copy:提供浅拷贝和深拷贝能力,深拷贝deepcopy()只对可变类型有效。
operator:包含函数调用形式的序列操作符。
types:包含python支持的所有类型。
collections:高性能容器数据类型。