天天看点

Python_序列对象内置方法详解_String前言 软件环境 序列类型 序列的操作方法字符串String最后

系统 

ubuntukylin 14.04

软件 

python 2.7.3

ipython 4.0.0

序列类型,即由整数进行索引的对象的有序集合。其中又可以分为下面两类: 

可变序列:列表,支持元素的插入、删除、替换 

不可变序列:元组、字符串

序列本质上是由索引对象来指向内存中的数据对象,所以序列数据对象都支持迭代方式,也都能够支持下列几种操作。

sequencename[x:y] ⇒ 切割出由索引x到y-1之间的元素。 

注意:索引均由0开始。而且序列的切片操作会返回一个生成一个新的对象,不会让原序列发生改变。

sequencename[x:y:stride] ⇒ 除了切割除x到y-1直接的元素,再对这些元素以stride-1的步进(间隔)进行挑选。 

扩展切片运算符能够支持步进。即获取下一个索引之间的间隔。

首先切割除第2到10个元素(空格也算一个),再每隔1个元素挑选一个元素。

序列的索引还可以是负数,-1指向序列的最后一个元素,以此类推。example:

还有下面两种有趣的玩法: 

反转序列

倒转删除元素

删除了倒数第1到第2个元素。

连接操作符’ + ‘,可以将若干个同类型的序列对象连接到一起。

如果使用连接操作符处理两个不同类型的序列,会出现类型错误。

重复运算符’ * ‘,能够让被操作数重复的n次,并生成一个新的同类型序列。

注意:建议在学习一个方法之前,先使用help()函数来查看方法的使用说明文档,其中参数类型可能为iterable迭代器。iterable迭代器分为下面3类: 

1.所有的序列类型list、str、tuple。 

2.非序列类型dict、file。 

3.自定义的任何包含__iter__()或__getitem__()方法的类的对象。 

即函数参数中包含iterable,表示可以传递迭代器类型实参。

序列对象的长度,即序列对象元素的个数

将两个序列对象索引相同的两个元素结合成元组,以较短的程度为准。

enumerate(sequence[,start = 0])接收一个序列类型的参数,返回由每一对索引号和元素组成的元组。可以指定索引的起始位置。

sorted(iterable, cmp=none, key=none, reverse=false) –> new sorted list 

iterable:待排序的对象 

cmp(x,y):指定一个定制的能够比较两个接收到的参数的函数,默认为none,即内建的比较函数。 

key(x):指定一个接收一个参数的函数,用作在每个元素中提取一个关键值作为比较值,缺省为none比较每个元素。 

reverse:false为默认正序排列,true为逆序排列。 

注意:没有__getitem__属性的对象,如:int类型是不能调用key和cmp函数的。 

注意:在python中有许多内建的函数需要指定一个定制的函数,如:map()、filter()、reduce()、包括sorted等,这种时候使用lambda匿名函数将会非常的方便。 

排序效率:key 、reverse > cmp 。因为cmp函数进行多次的两两比较,而key、reverse对每个输入记录只会被调用一次。 

key函数:以第二个关键字为比较值排序

cmp函数:以第二个关键字为比较值排序

reverse:逆序排列

若元素是string类型的化会转换为ascii码计算后再比较。

类似min()方法。

注意:sum()方法不支持元素为string或char类型的序列。

会触发类型错误,不支持的运算数类型

全true则truw

注意:所以的空值序列对象都是false

有true则true

下面介绍适用于字符串的内建方法。

s.index(sub [,start [,end]]) -> int 在start-end的范围内找到substring对应的索引号,再返回一个int类型对象。

当在指定范围内没有查询到substring时,会触发<code>valueerror: substring not found</code>的错误。同时可以看出,string类型对象调用了其内建方法后仍是string类型。

s.join(iterable) -&gt; string 传递一个序列参数,会将string对象插入到序列的元素之间。即将序列的元素以string为分隔符连接起来,string对象可以为空。

s.replace(old, new[, count]) -&gt; string 

将string中的元素替换为指定的新元素,还可以指定替换的数量。

s.split([sep [,maxsplit]]) -&gt; list of strings 

输入指定的分割符和分割次数两个参数。

s.strip([chars]) -&gt; string or unicode 

将string两端的chars去掉,并不能去掉string中间的substring

同样是序列对象一份子的list类型,一样有着非常多有意思的内置方法,我们下回再继续学习。

转载:http://blog.csdn.net/jmilk/article/details/49560837