Python编程之序列操作实例详解

本文实例讲述了Python编程之序列操作。分享给大家供大家参考,具体如下:

#coding=utf8

'''''

序列类型有着相同的访问模式:它的每一个元素可以通过指定一个偏移量的方式得到。

可以通过切片操作一次获得多个元素。

序列的下标偏移量是从0开始到总元素数减一结束。

标准类型操作符一般都能试用与所有的序列类型。

序列类型操作符:

---------------------------------------------------------------------------

序列操作符 作用

---------------------------------------------------------------------------

seq[ind] 获得下标为ind的元素

seq[ind1:ind2] 获得下标从ind1到ind2间的元素集合

seq * expr 序列重复expr次

seq1+seq2 连接序列seq1和seq2

obj in seq 判断obj元素是否包含在seq中

obj not in seq 判断obj元素是否不包含在seq中

---------------------------------------------------------------------------

切片操作符在Python中的原型是:[start:stop:step]

即:[开始索引:结束索引:步长值]

开始索引:同其它语言一样,从0开始。序列从左向右方向中,第一个值的索引为0,最后一个为-1

结束索引:切片操作符将取到该索引为止,不包含该索引的值。

步长值:默认是一个接着一个切取,如果为2,则表示进行隔一取一操作。步长值为正时表示从左向右取,如果为负,则表示从右向左取。步长值不能为0。

切片索引的语法比简单的单一元素索引灵活的多。开始和结束索引值可以超过字符串的长度。

函数原型:range(start, end, scan):

参数含义:start:计数从start开始。默认是从0开始。例如range(5)等价于range(0, 5);

end:计数到end结束,但不包括end.例如:range(0, 5) 是[0, 1, 2, 3, 4]没有5

scan:每次跳跃的间距,默认为1。例如:range(0, 5) 等价于 range(0, 5, 1)

序列类型转换工厂函数:

-----------------------------------------------------------------------------------------------------------------------

函数 含义

-----------------------------------------------------------------------------------------------------------------------

list(iter) 把可迭代对象转换为列表

str(obj) 把obj对象转换成字符串(对象的字符串表示法)

unicode(obj) 把对象转换成Unicode字符串(使用默认编码)

basestring() 抽象工厂函数,是str和unicode的父类,不能实例化不能调用

tuple(iter) 把一个可迭代对象转换成一个元组对象

-----------------------------------------------------------------------------------------------------------------------

序列类型可用的内建函数:

-----------------------------------------------------------------------------------------------------------------------

函数名 功能

-----------------------------------------------------------------------------------------------------------------------

enumerate(iter) 接受可迭代对象作为参数,返回一个enumerate对象,该对象生成

由iter每个元素的index值和item值组成的元组。

len(seq) 返回seq的长度

max(iter,key=None) or

max(arg0,arg1....,key=None) 返回iter或(arg0,arg1,...)中的最大值,如果指定key,key必须是

一个可以传给sort()方法的,用于比较的回调函数

min(iter,key=None) or

min(arg0,arg1....,key=None) 返回iter或(arg0,arg1,...)中的最小值,如果指定key,key必须是

一个可以传给sort()方法的,用于比较的回调函数

reversed(seq) 接受一个序列作为参数,返回一个以逆序访问的迭代器

sorted(iter,func=None,

key=None,reverse=False) 接受一个可迭代对象作为参数,返回一个有序的列表;可选参数func,key

和reverse的含义跟list.sort()内建函数的参数含义一样。

sum(seq,init=0) 返回seq和可选参数init的总和,其效果等同于reduce(operator.add,seq,init)

zip([it0,it1,...itN]) 返回一个列表,其第一个元素是it0,it1,...这些元素的第一个元素组成一个元组,

第二个...类推

-----------------------------------------------------------------------------------------------------------------------

'''

class sequenceClass(object):

def __init__(self):

'''''定义个整数序列表'''

self.intSeq=[1,2,5,8,95,456,236,458,95,62,63,64,77]

'''''定义个浮点数序列表'''

self.floatSeq=[0.33,2.56,45.23,45.33,46.789,23.00]

'''''定义个字符串序列表'''

self.strSeq=["hello","double","floatNumer","ewang"]

#输出初始化序列内容

def outInitData(self):

print "初始化整数序列表:",self.intSeq

print "初始化浮点数序列表:",self.floatSeq

print "初始化字符串序列表:",self.strSeq

#使用序列类型操作符

def sequenceTypeOper(self):

#获取序列中第几个元素值,下表从0开始

print "整数列表第%d元素的值是%d " %(3,self.intSeq[2])

#获取序列中第几个到第几个的之间元素的集合(从左向右)

print "浮点列表%d--%d之间元素列表:%r" %(1,5,self.floatSeq[1:5])

#倒数%d---%d之间的数据集合(从右向左)

print "浮点列表%d--%d之间元素列表:%r" %(-1,-5,self.floatSeq[-5:-1])

#使用切片对序列逆序

print "输出逆序的字符串序列:",self.strSeq[::-1]

#使用切片获取奇数位数据列表

print "输出整数列表奇数数位元素列表:" ,self.intSeq[::2]

#使用切片获取偶数位数据列表

print "输出整数列表偶数位元素列表:",self.intSeq[1:-1:2]

#序列重复2次

print "字符串序列重复2次并输出:",self.strSeq*2

#连接整数序列和浮点数序列

print "连接整数序列和浮点数序列",self.intSeq+self.floatSeq

#判断某个元素会否包含在序列中

if 5 in self.intSeq:

print "输出序列intSeq:",self.intSeq

#判断某个元素不包含在序列中

if "home" not in self.strSeq:

print "输出序列strSeq:",self.strSeq

def sliceIndexUse(self):

#切片索引的开始和结束索引值可以超过序列的长度

print "输出strSeq序列:",self.intSeq[-100:100]

#使用range函数操作字符串

#每次都把位于最后一个字符删掉

#无法输出str这个字符串

ind=-1

strg=self.strSeq[2]

print "要操作的字符串(strg)是 :",strg

for ind in range(-1,-len(strg),-1):

print strg[:ind],

#使用None作为索引值,可以从第一个遍历到最后一个元素

s=self.strSeq[-1]

print "\n要操作的字符串(s)是 :",s

for i in [None]+range(-1,-len(s),-1):

print s[:i],

def useTypeConver(self):

iterObj="hello ewang"

inter=45454

print "\n使用类型转换函数前的iterObj类型 :",type(iterObj)

print "使用类型转换函数前的inter类型 :",type(inter)

#使用list类型转换函数

print "使用list转换函数后的变量类型:",type(list(iterObj))

#使用str把对象转换为字符串类型

print "使用str函数把变量inter转换为字符串类型:",type(str(inter))

#使用unicode函数转换为Unicode字符串

print "使用unicode函数把变量iterObj转换为Unicode类型:",type(str(iterObj))

#使用tuple函数转换为一个元组对象

print "使用tuple函数把变量iterObj转换为元组类型:",type(tuple(iterObj))

def useSequencBIF(self):

#调用enumerate内建函数

print "使用enumerate函数:",enumerate(self.strSeq)

#调用len函数

print "使用len函数:",len(self.strSeq)

#调用max求最大值

print "使用max函数求序列的最大值:",max(self.intSeq)

print "使用max函数求参数的最大值:",max(1,2,5,8,95,456)

#调用min求最小值

print "使用min函数求序列的最小值:",min(self.floatSeq)

print "使用min函数求参数的最小值:",min(0.33,2.56,45.23)

#调用reversed函数对序列进行逆序

print "使用reversed函数对序列intSeq逆序:",reversed(self.intSeq)

#调用sorted函数对序列进行排序

print "调用sorted函数对序列strSeq进行排序:",sorted(self.strSeq)

#调用sum对序列进行求和

print "调用sum函数对序列intSeq进行求和",sum(self.intSeq)

#调用zip返回一个元组列表

print "调用zip函数对list操作返回一个元组列表:",zip(self.strSeq,self.strSeq)

def run(self):

self.outInitData()

self.sequenceTypeOper()

self.sliceIndexUse()

self.useTypeConver()

self.useSequencBIF()

def test():

#创建一个对象实例

seq=sequenceClass()

seq.run()

if __name__=="__main__":

test()

运行结果:

更多关于Python相关内容感兴趣的读者可查看本站专题:《Python数据结构与算法教程》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》、《Python入门与进阶经典教程》及《Python文件与目录操作技巧汇总》

希望本文所述对大家Python程序设计有所帮助。

以上是 Python编程之序列操作实例详解 的全部内容, 来源链接: utcz.com/z/349817.html

回到顶部