#coding=utf8'''序列類型有著相同的訪問模式:它的每一個元素可以通過指定一個偏移量的方式得到??梢酝ㄟ^切片操作一次獲得多個元素。序列的下標偏移量是從0開始到總元素數減一結束。標準類型操作符一般都能試用與所有的序列類型。序列類型操作符:---------------------------------------------------------------------------序列操作符 作用---------------------------------------------------------------------------seq[ind] 獲得下標為ind的元素seq[ind1:ind2] 獲得下標從ind1到ind2間的元素集合seq * exPR 序列重復expr次seq1+seq2 連接序列seq1和seq2obj 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) ormax(arg0,arg1....,key=None) 返回iter或(arg0,arg1,...)中的最大值,如果指定key,key必須是 一個可以傳給sort()方法的,用于比較的回調函數 min(iter,key=None) ormin(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()
新聞熱點
疑難解答