Python編程之序列操作實例詳解
本文實例講述了Python編程之序列操作。分享給大家供大家參考,具體如下:
#coding=utf8
'''''
序列類型有著相同的訪問模式:它的每一個元素可以通過指定一個偏移量的方式得到。
可以通過切片操作一次獲得多個元素。
序列的下標(biāo)偏移量是從0開始到總元素數(shù)減一結(jié)束。
標(biāo)準(zhǔn)類型操作符一般都能試用與所有的序列類型。
序列類型操作符:
---------------------------------------------------------------------------
序列操作符 作用
---------------------------------------------------------------------------
seq[ind] 獲得下標(biāo)為ind的元素
seq[ind1:ind2] 獲得下標(biāo)從ind1到ind2間的元素集合
seq * expr 序列重復(fù)expr次
seq1+seq2 連接序列seq1和seq2
obj in seq 判斷obj元素是否包含在seq中
obj not in seq 判斷obj元素是否不包含在seq中
---------------------------------------------------------------------------
切片操作符在Python中的原型是:[start:stop:step]
即:[開始索引:結(jié)束索引:步長值]
開始索引:同其它語言一樣,從0開始。序列從左向右方向中,第一個值的索引為0,最后一個為-1
結(jié)束索引:切片操作符將取到該索引為止,不包含該索引的值。
步長值:默認(rèn)是一個接著一個切取,如果為2,則表示進(jìn)行隔一取一操作。步長值為正時表示從左向右取,如果為負(fù),則表示從右向左取。步長值不能為0。
切片索引的語法比簡單的單一元素索引靈活的多。開始和結(jié)束索引值可以超過字符串的長度。
函數(shù)原型:range(start, end, scan):
參數(shù)含義:start:計數(shù)從start開始。默認(rèn)是從0開始。例如range(5)等價于range(0, 5);
end:計數(shù)到end結(jié)束,但不包括end.例如:range(0, 5) 是[0, 1, 2, 3, 4]沒有5
scan:每次跳躍的間距,默認(rèn)為1。例如:range(0, 5) 等價于 range(0, 5, 1)
序列類型轉(zhuǎn)換工廠函數(shù):
-----------------------------------------------------------------------------------------------------------------------
函數(shù) 含義
-----------------------------------------------------------------------------------------------------------------------
list(iter) 把可迭代對象轉(zhuǎn)換為列表
str(obj) 把obj對象轉(zhuǎn)換成字符串(對象的字符串表示法)
unicode(obj) 把對象轉(zhuǎn)換成Unicode字符串(使用默認(rèn)編碼)
basestring() 抽象工廠函數(shù),是str和unicode的父類,不能實例化不能調(diào)用
tuple(iter) 把一個可迭代對象轉(zhuǎn)換成一個元組對象
-----------------------------------------------------------------------------------------------------------------------
序列類型可用的內(nèi)建函數(shù):
-----------------------------------------------------------------------------------------------------------------------
函數(shù)名 功能
-----------------------------------------------------------------------------------------------------------------------
enumerate(iter) 接受可迭代對象作為參數(shù),返回一個enumerate對象,該對象生成
由iter每個元素的index值和item值組成的元組。
len(seq) 返回seq的長度
max(iter,key=None) or
max(arg0,arg1....,key=None) 返回iter或(arg0,arg1,...)中的最大值,如果指定key,key必須是
一個可以傳給sort()方法的,用于比較的回調(diào)函數(shù)
min(iter,key=None) or
min(arg0,arg1....,key=None) 返回iter或(arg0,arg1,...)中的最小值,如果指定key,key必須是
一個可以傳給sort()方法的,用于比較的回調(diào)函數(shù)
reversed(seq) 接受一個序列作為參數(shù),返回一個以逆序訪問的迭代器
sorted(iter,func=None,
key=None,reverse=False) 接受一個可迭代對象作為參數(shù),返回一個有序的列表;可選參數(shù)func,key
和reverse的含義跟list.sort()內(nèi)建函數(shù)的參數(shù)含義一樣。
sum(seq,init=0) 返回seq和可選參數(shù)init的總和,其效果等同于reduce(operator.add,seq,init)
zip([it0,it1,...itN]) 返回一個列表,其第一個元素是it0,it1,...這些元素的第一個元素組成一個元組,
第二個...類推
-----------------------------------------------------------------------------------------------------------------------
'''
class sequenceClass(object):
def __init__(self):
'''''定義個整數(shù)序列表'''
self.intSeq=[1,2,5,8,95,456,236,458,95,62,63,64,77]
'''''定義個浮點數(shù)序列表'''
self.floatSeq=[0.33,2.56,45.23,45.33,46.789,23.00]
'''''定義個字符串序列表'''
self.strSeq=["hello","double","floatNumer","ewang"]
#輸出初始化序列內(nèi)容
def outInitData(self):
print "初始化整數(shù)序列表:",self.intSeq
print "初始化浮點數(shù)序列表:",self.floatSeq
print "初始化字符串序列表:",self.strSeq
#使用序列類型操作符
def sequenceTypeOper(self):
#獲取序列中第幾個元素值,下表從0開始
print "整數(shù)列表第%d元素的值是%d " %(3,self.intSeq[2])
#獲取序列中第幾個到第幾個的之間元素的集合(從左向右)
print "浮點列表%d--%d之間元素列表:%r" %(1,5,self.floatSeq[1:5])
#倒數(shù)%d---%d之間的數(shù)據(jù)集合(從右向左)
print "浮點列表%d--%d之間元素列表:%r" %(-1,-5,self.floatSeq[-5:-1])
#使用切片對序列逆序
print "輸出逆序的字符串序列:",self.strSeq[::-1]
#使用切片獲取奇數(shù)位數(shù)據(jù)列表
print "輸出整數(shù)列表奇數(shù)數(shù)位元素列表:" ,self.intSeq[::2]
#使用切片獲取偶數(shù)位數(shù)據(jù)列表
print "輸出整數(shù)列表偶數(shù)位元素列表:",self.intSeq[1:-1:2]
#序列重復(fù)2次
print "字符串序列重復(fù)2次并輸出:",self.strSeq*2
#連接整數(shù)序列和浮點數(shù)序列
print "連接整數(shù)序列和浮點數(shù)序列",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):
#切片索引的開始和結(jié)束索引值可以超過序列的長度
print "輸出strSeq序列:",self.intSeq[-100:100]
#使用range函數(shù)操作字符串
#每次都把位于最后一個字符刪掉
#無法輸出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使用類型轉(zhuǎn)換函數(shù)前的iterObj類型 :",type(iterObj)
print "使用類型轉(zhuǎn)換函數(shù)前的inter類型 :",type(inter)
#使用list類型轉(zhuǎn)換函數(shù)
print "使用list轉(zhuǎn)換函數(shù)后的變量類型:",type(list(iterObj))
#使用str把對象轉(zhuǎn)換為字符串類型
print "使用str函數(shù)把變量inter轉(zhuǎn)換為字符串類型:",type(str(inter))
#使用unicode函數(shù)轉(zhuǎn)換為Unicode字符串
print "使用unicode函數(shù)把變量iterObj轉(zhuǎn)換為Unicode類型:",type(str(iterObj))
#使用tuple函數(shù)轉(zhuǎn)換為一個元組對象
print "使用tuple函數(shù)把變量iterObj轉(zhuǎn)換為元組類型:",type(tuple(iterObj))
def useSequencBIF(self):
#調(diào)用enumerate內(nèi)建函數(shù)
print "使用enumerate函數(shù):",enumerate(self.strSeq)
#調(diào)用len函數(shù)
print "使用len函數(shù):",len(self.strSeq)
#調(diào)用max求最大值
print "使用max函數(shù)求序列的最大值:",max(self.intSeq)
print "使用max函數(shù)求參數(shù)的最大值:",max(1,2,5,8,95,456)
#調(diào)用min求最小值
print "使用min函數(shù)求序列的最小值:",min(self.floatSeq)
print "使用min函數(shù)求參數(shù)的最小值:",min(0.33,2.56,45.23)
#調(diào)用reversed函數(shù)對序列進(jìn)行逆序
print "使用reversed函數(shù)對序列intSeq逆序:",reversed(self.intSeq)
#調(diào)用sorted函數(shù)對序列進(jìn)行排序
print "調(diào)用sorted函數(shù)對序列strSeq進(jìn)行排序:",sorted(self.strSeq)
#調(diào)用sum對序列進(jìn)行求和
print "調(diào)用sum函數(shù)對序列intSeq進(jìn)行求和",sum(self.intSeq)
#調(diào)用zip返回一個元組列表
print "調(diào)用zip函數(shù)對list操作返回一個元組列表:",zip(self.strSeq,self.strSeq)
def run(self):
self.outInitData()
self.sequenceTypeOper()
self.sliceIndexUse()
self.useTypeConver()
self.useSequencBIF()
def test():
#創(chuàng)建一個對象實例
seq=sequenceClass()
seq.run()
if __name__=="__main__":
test()
運行結(jié)果:

更多關(guān)于Python相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Python數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Python函數(shù)使用技巧總結(jié)》、《Python字符串操作技巧匯總》、《Python入門與進(jìn)階經(jīng)典教程》及《Python文件與目錄操作技巧匯總》
希望本文所述對大家Python程序設(shè)計有所幫助。
相關(guān)文章
pytorch實現(xiàn)建立自己的數(shù)據(jù)集(以mnist為例)
今天小編就為大家分享一篇pytorch實現(xiàn)建立自己的數(shù)據(jù)集(以mnist為例),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-01-01
Python Matplotlib條形圖之垂直條形圖和水平條形圖詳解
這篇文章主要為大家詳細(xì)介紹了Python Matplotlib條形圖之垂直條形圖和水平條形圖,使用數(shù)據(jù)庫,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-03-03
python uvloop事件循環(huán)庫使用功能示例探究
這篇文章主要為大家介紹了python uvloop事件循環(huán)庫使用功能示例探究,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2024-01-01
python中使用pyhook實現(xiàn)鍵盤監(jiān)控的例子
這篇文章主要介紹了python中使用pyhook實現(xiàn)鍵盤監(jiān)控的例子,包含pyhook的下載地址和手冊地址及一個Windows下的監(jiān)控實例,需要的朋友可以參考下2014-07-07
Python標(biāo)準(zhǔn)庫之time庫的使用教程詳解
這篇文章主要介紹了Python的time庫的使用教程,文中有非常詳細(xì)的代碼示例,對正在學(xué)習(xí)python基礎(chǔ)的小伙伴們有非常好的幫助,需要的朋友可以參考下2022-04-04
Python中dilb和face_recognition第三方包安裝失敗的解決
本文主要介紹了Python中dilb和face_recognition第三方包安裝失敗的解決,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-02-02
Python中plt.scatter()函數(shù)的常見用法小結(jié)
這篇文章主要介紹了Python中plt.scatter()函數(shù)的常見用法,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-04-04

