python 序列应用

序列:成员有序排列,并且可以通过下标漂移量访问一个(直接指定索引)或者几个成员(切片操作)。包括字符串(普通字符串和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。

posted on 2013-06-02 20:15  张飞_  阅读(628)  评论(0编辑  收藏  举报

导航