序列:成员有序排列,并且可以通过下标漂移量访问一个(直接指定索引)或者几个成员(切片操作)。包括字符串(普通字符串和unicode字符串)、列表和元组。其索引第一个元素从零向后递增(正索引),也可以从最后一个元素的-1索引向前递减(负索引)。
1、所有的标准类型操作符适用于序列(值比较操作符,对象身份比较,逻辑操作符)。
2、序列类型的操作符:
(1)成员关系操作符(in, not in):判断一个元素是否属于一个序列,返回值为True/False。
(2)连接操作符(+):将一个序列与另一个相同类型的序列做连接。
这个方法并不是最快最有效的,因为python要为每一个参加连接操作的字符串分配新的内存,包括新产生的字符串。对于字符串,推荐将子字符串放到一个列表或者可迭代对象中,调用join方法连接,节约内存。对于列表,推荐使用列表对象的extend()方法。
(3)重复操作符(*):一个序列的多份拷贝,返回一个包含多份原对象拷贝的新对象。sequence*copies_int,注意copies_int必须为整型,不能为长整型。
(4)切片操作符([],[:][::]):
访问某一个数据元素:sequence[index]。(len()函数可获得序列的长度)
例:print ('a','b','c')[1] (例子中没有先赋值直接访问一个序列的元素,当只对函数返回序列对象的某些元素感兴趣时非常有用)
访问多个元素:sequence[starting_index:ending_index]。(注意不包括结束索引,并且如果没有提供或者用None作索引值,则从第一个元素开始或者到最后一个元素结束)。对于这种形式,起始索引和结束索引可以为超过字符串长度的索引。
例:s[:-1] 从第一个元素到最后一个元素
s[:0] 返回''
扩展的步长索引:
例:s[::-1] 可以看作翻转操作,'abcd'操作后为'dcba'
例:s='abcde'
for i in [None] + range(-1, -len(s),-1)
print s[:i]
(注意这里不能先用None生成列表,再用extend将range的输出加入列表,因为extend的输出为None)
3、序列常用的内建函数:
(1)类型转换:实际上没有进行真正的类型转换,是将参数传入对象的内容浅拷贝到新生成的对象中。浅拷贝是指只拷贝对象的索引,不是重新建立对象,在python中,对象建立后就不能更改其身份和类型。
str():用于对象的打印,对序列类型和其它类型都适用。
unicode():功能与str()一样,只是输出为unicode编码。
list():转换为列表;tuple():转换为元组。这两个函数常用于列表和元组的互换。很少用于string类型。
basestring():抽象工厂函数,是str和unicode的父类,不能被实例化和调用。
(2)内建函数:
参数只接收序列对象:len(seq),reversed(seq),sum(seq,init=0)。
参数可接收序列对象和可迭代对象:enumerate(iter),sorted(iter,func=None,key=None,reverse=False),
zip([it0,it1,...itN])
可接收参数列表:max(iter,key=None)或者max(arg0,arg1,...,key=None)
min类同于max。