Python程序設(shè)計(jì)基礎(chǔ)及實(shí)踐(慕課版 第2版)課件 5. 組合數(shù)據(jù)類型(1)字符串元組_第1頁(yè)
Python程序設(shè)計(jì)基礎(chǔ)及實(shí)踐(慕課版 第2版)課件 5. 組合數(shù)據(jù)類型(1)字符串元組_第2頁(yè)
Python程序設(shè)計(jì)基礎(chǔ)及實(shí)踐(慕課版 第2版)課件 5. 組合數(shù)據(jù)類型(1)字符串元組_第3頁(yè)
Python程序設(shè)計(jì)基礎(chǔ)及實(shí)踐(慕課版 第2版)課件 5. 組合數(shù)據(jù)類型(1)字符串元組_第4頁(yè)
Python程序設(shè)計(jì)基礎(chǔ)及實(shí)踐(慕課版 第2版)課件 5. 組合數(shù)據(jù)類型(1)字符串元組_第5頁(yè)
已閱讀5頁(yè),還剩64頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

郭煒信息科學(xué)技術(shù)學(xué)院1

微博:/guoweiofpku

學(xué)會(huì)程序和算法,走遍天下都不怕!計(jì)算概論CPython組合數(shù)據(jù)類型(一)

字符串和元組信息科學(xué)技術(shù)學(xué)院2Python的數(shù)據(jù)類型基本數(shù)據(jù)類型

int,float,complex組合數(shù)據(jù)類型

字符串

str元組 tuple

列表 list字典

dict集合 set3isinstance函數(shù)isinstance(x,y)函數(shù)查詢數(shù)據(jù)x是否是類型ya="1233"print(isinstance(a,str)) #>>Trueprint(isinstance(a,int)) #>>Falseb=(1,3,)print(isinstance(b,tuple)) #>>True4len函數(shù)len函數(shù)可以用來(lái)求組合數(shù)據(jù)類型的元素個(gè)數(shù)(長(zhǎng)度)print(len("12345")) #>>5 求字符串長(zhǎng)度print(len([1,2,3,4]) #>>4 求列表長(zhǎng)度print(len((1,2,3))) #>>3 求元組長(zhǎng)度print(len({1,2,3})) #>>3 求集合元素個(gè)數(shù)print(len({'tom':2,'jack':3})) #>>2求字典元素個(gè)數(shù)5Python變量的

指針本質(zhì)信息科學(xué)技術(shù)學(xué)院

郭煒瑞士馬特洪峰Python中的變量都是指針Python中所有可賦值的東西,即可以出現(xiàn)在

賦值號(hào)"="左邊的東西,都是指針指針即代表內(nèi)存單元的地址將指針?lè)Q作“箭頭",更容易理解。所有變量都是箭頭,指向內(nèi)存某處對(duì)變量進(jìn)行賦值的本質(zhì),就是讓該變量(箭頭)指向某個(gè)地方783a4b對(duì)變量進(jìn)行賦值,意味著將變量指向某處Python中的變量都是指針a=3b=4Python中的變量都是指針用一個(gè)變量對(duì)另一個(gè)變量賦值意味著讓

兩個(gè)變量指向同一個(gè)地方93a4ba=bis運(yùn)算符和==的區(qū)別aisb為True說(shuō)a和b指向同一個(gè)地方a==b為True說(shuō)明a和b指向的地方放的的東西相同,但是a和b不一定指向相同的地方a=b會(huì)使得a和b指向同一個(gè)地方103is運(yùn)算符和==的區(qū)別xisy表示x和y是否指向同一個(gè)地方x==y表示x和y的內(nèi)容是否相同a=[1,2,3,4]b=[1,2,3,4]print(a==b)#>>Trueprint(aisb)#>>False11a[1,2,3,4]b[1,2,3,4]is運(yùn)算符和==的區(qū)別xisy表示x和y是否指向同一個(gè)地方x==y表示x和y的內(nèi)容是否相同a=[1,2,3,4]b=[1,2,3,4]print(a==b)#>>Trueprint(aisb)#>>Falsec=aprint(a==c)#>>Trueprint(aisc)#>>True12a[1,2,3,4]b[1,2,3,4]cis運(yùn)算符和==的區(qū)別a[2]="ok"print(c)#>>[1,2,'ok',4]因?yàn)閍和c指向同一個(gè)地方,所以修改a[2],c[2]也變。a[2]和c[2]是同一個(gè)東西13a[1,2,'ok',4]b[1,2,3,4]cis運(yùn)算符和==的區(qū)別對(duì)int,float,complex,str,tuple類型的變量a和b,只需關(guān)注a==b是否成立,關(guān)注aisb是否成立無(wú)意義。因這些數(shù)據(jù)本身都不會(huì)更改,不會(huì)產(chǎn)生a指向的東西改了b指向的東西也跟著變的情況對(duì)list,dict,set類型的變量a和b,a==b和aisb的結(jié)果都需要關(guān)注。因這些數(shù)據(jù)本身會(huì)改變。改變了a指向的內(nèi)容,說(shuō)不定b指向的內(nèi)容也變了。14列表元素的指針本質(zhì)列表的元素也可以賦值,因此也是指針15a=[1,2,3,4]b=[1,2,3,4]a[,,,]b[,,,]準(zhǔn)確的效果:1234a[0],a[1]....b[0],b[1].....都是指針列表元素的指針本質(zhì)列表的元素也可以賦值,因此也是指針16a=[1,2,3,4]b=[1,2,3,4]a[,,,]b[,,,]準(zhǔn)確的效果:1234執(zhí)行b[0],b[2]=9,4后9函數(shù)參數(shù)的傳遞信息科學(xué)技術(shù)學(xué)院

郭煒京都金閣寺函數(shù)參數(shù)的傳遞函數(shù)參數(shù)傳遞方式都是傳值,即形參是實(shí)際參數(shù)的一個(gè)拷貝。函數(shù)參數(shù)也是指針。形參和實(shí)參指向同一個(gè)地方。對(duì)形參賦值(讓其指向別處)不會(huì)影響實(shí)參。defSwap(x,y):tmp=xx=yy=tmpa=4b=5Swap(a,b)print(a,b) #>>4,5184a5bxytmp=x剛執(zhí)行完tmp函數(shù)參數(shù)的傳遞函數(shù)參數(shù)傳遞方式都是傳值,即形參是實(shí)際參數(shù)的一個(gè)拷貝。函數(shù)參數(shù)也是指針。形參和實(shí)參指向同一個(gè)地方。對(duì)形參賦值(讓其指向別處)不會(huì)影響實(shí)參。defSwap(x,y):tmp=xx=yy=tmpa=4b=5Swap(a,b)print(a,b) #>>4,5194a5bxyy=tmp執(zhí)行后tmp函數(shù)參數(shù)的傳遞但是如果函數(shù)執(zhí)行過(guò)程中,改變了形參所指向的地方的內(nèi)容,則實(shí)參所指向的地方內(nèi)容也會(huì)被改變。defSwap(x,y):tmp=x[0]x[0]=y[0]#若x,y是列表,則x[0],y[0],tmp都是指針y[0]=tmpa=[4,5] b=[6,7]Swap(a,b)#進(jìn)入函數(shù)后,x和a指向相同地方,y和b指向相同地方print(a,b) #>>[6,5][4,7]20函數(shù)參數(shù)的傳遞進(jìn)入Swap函數(shù)執(zhí)行完tmp=x[0]時(shí)21a[,]b[,]4567xya[,]b[,]4567xySwap函數(shù)執(zhí)行完時(shí):tmptmp字符串的轉(zhuǎn)義字符信息科學(xué)技術(shù)學(xué)院郭煒梵蒂岡轉(zhuǎn)義字符'\'及其后面的某些字符會(huì)構(gòu)成轉(zhuǎn)義字符,即兩個(gè)字符當(dāng)一個(gè)字符看print("hello\nworld\tok\"1\\2")#\n\t\"都是“轉(zhuǎn)義字符”代表?yè)Q行,制表符,雙引號(hào),斜杠輸出:helloworld ok"1\2字符,包括\n這樣的轉(zhuǎn)義字符,只能出現(xiàn)在字符串里面,必須用引號(hào)括起來(lái)!print(a\nb)不合法,不會(huì)打出a的值,然后換行,再打出b的值23轉(zhuǎn)義字符規(guī)定'\'不轉(zhuǎn)義的字符串print(r'ab\ncd')

#>>ab\ncdr

表示字符串里面的\就是\,不會(huì)和后面的字符合并起來(lái)看待24字符串的切片(子串)信息科學(xué)技術(shù)學(xué)院郭煒富士山字符串切片(子串)詳解字符串的切片(也叫子串,即連續(xù)的一部分)a[x:y]表示字符串a(chǎn)里從下標(biāo)x到下標(biāo)y那一部分的子串(不包括下標(biāo)y的那個(gè)字符)a="ABCD" print(a[1:2]) #>>B區(qū)間是左閉右開,終點(diǎn)不算

print(a[0:-1]) #>>ABCprint(a[-3:-1]) #>>BCprint(a[2:]) #>>CD終點(diǎn)省略就是一直取到最后一個(gè)字符print(a[:3]) #>>ABC起點(diǎn)省略就是從頭開始取print("abcd"[2:3]) #>>c26字符串切片(子串)詳解a[x:y:z]表示,從a[x]取到a[y](a[y]不算),每z個(gè)字符取一個(gè),最后拼起來(lái)。z為負(fù)數(shù)則代表倒著取x,y可以省略。x,y全省略表示從頭取到尾或從尾取到頭print("1234"[3:1:-1])#>>43print("abcde"[::-1])#>>edcba可用于反轉(zhuǎn)字符串print("12345678"[1:7:2])#>>246print("12345678"[7:1:-2])#>>864字符串切片的用法也適用于元組和列表!27字符串的分割(split)信息科學(xué)技術(shù)學(xué)院郭煒大阪天守閣字符串的split函數(shù)詳解s.split(x)用字符串x做分隔符分割字符串s,得到分隔后的列表兩個(gè)相鄰分隔符之間會(huì)被分隔出一個(gè)空串a(chǎn)="12..34.5346...a"print(a.split("..")) #>>['12','34.5346','.a']print(a.split("."))#>>['12','','34','5346','','','a']print(a.split("34"))#>>['12..','.5','6...a']29字符串高級(jí)分割30通過(guò)正則表達(dá)式用多個(gè)分隔串進(jìn)行分割importre

re.split(x,s):用正則表達(dá)式x里面的分隔串分割sx里面不同分隔串用"|"隔開,形如:';||,|\*|\n|\?|ok|8'

一些特殊字符,比如:?!"'()|*$\[]^{}.,

在正則表達(dá)式里出現(xiàn)時(shí),前面需要加\字符串高級(jí)分割31通過(guò)正則表達(dá)式用多個(gè)分隔串進(jìn)行分割importre

a='Beautiful,is;beoktter*than\nugly'

print(re.split(';||,|\*|\n|ok',a))#分隔串用|隔開]';'''',''*''\n''ok'都被看作分隔串#>>['Beautiful','','is','','be','tter','than','ugly']兩個(gè)相鄰的分隔串之間,會(huì)隔出一個(gè)空串字符串高級(jí)分割32用多個(gè)分隔串進(jìn)行分割importre

a='Beautiful,is;better*than\nugly'

print(re.split(';||,|\*|\n',a))#分隔串用|隔開]';'''',''*''\n'都被看作分隔串#>>['Beautiful','','is','','better','than','ugly']兩個(gè)相鄰的分隔串之間,會(huì)隔出一個(gè)空串字符串的函數(shù)信息科學(xué)技術(shù)學(xué)院郭煒美國(guó)加州1號(hào)公路字符串函數(shù)count求子串出現(xiàn)次數(shù) s='thisAAbbAA'

s.count('AA')#返回2,AA出現(xiàn)2次

len

字符串長(zhǎng)度 s='1234'

len(s) #4

34字符串函數(shù)upper,lower轉(zhuǎn)大寫、小寫 s="abc"

print(s.upper()) #>>ABC

print(s) #>>abc

35字符串函數(shù)find,rfind,index,rindex在字符串中查找子串,返回找到的位置(下標(biāo))。找不到的話,find返回-1,index引發(fā)異常s="1234abc567abc12"print(s.find("ab"))#>>4,"ab"第一次出現(xiàn)在下標(biāo)4print(s.rfind("ab"))#>>10#find從頭開始找,rfind從尾巴開始找。返回第一個(gè)找到的位置try:

s.index("afb")#找不到"afb"因此會(huì)產(chǎn)生異常exceptExceptionase:

print(e) #>>substringnotfound36字符串函數(shù)find還可以指定查找起點(diǎn)s="1234abc567abc12"print(s.find("12",4))#>>13指定從下標(biāo)4處開始查找37字符串函數(shù)replace替換s="1234abc567abc12"b=s.replace("abc","FGHI")#b由把s里所有abc換成FGHI而得print(b) #>>1234FGHI567FGHI12print(s) #>>1234abc567abc12print(s.replace("abc",""))#>>123456712isdigit(),islower(),isupper()判斷字符串是否是數(shù),是否全是小寫等startswith,endswith

判斷字符串是否以某子串開頭、結(jié)尾38字符串函數(shù)isdigit(),islower(),isupper()判斷字符串是否全是數(shù),是否全是小寫等print("123.4".isdigit())#>>Falseprint("123".isdigit())#>>Trueprint("a123.4".isdigit())#>>Falseprint("Ab123".islower())#>>Falseprint("ab123".islower())#>>True39字符串函數(shù)startswith,endswith

判斷字符串是否以某子串開頭、結(jié)尾print("abcd".startswith("ab"))#>>Trueprint("abcd".endswith("bcd")) #>>Trueprint("abcd".endswith("bed")) #>>False40字符串函數(shù)strip()返回除去頭尾空白字符(空格,'\r''\t''\n')后的字符串lstrip()返回除去頭部(左端)空白字符后的字符串rstrip()返回除去尾部(右端)空白字符后的字符串print("\t1234\n".strip())#>>1234print("\t12345".lstrip())#>>1234541字符串函數(shù)strip(s),lstrip(s),rstrip(s)返回除去兩端、左端、右端在s中出現(xiàn)的字符后的字符串

print("takeab\n".strip("ba\n"))#>>take#去除兩端'b','a','','\n'print("cd\t12345".lstrip("d\tc"))#>>12345#去除左端'd','\t','c'42字符串的編碼和

格式化信息科學(xué)技術(shù)學(xué)院郭煒挪威蓋朗厄爾峽灣字符串編碼字符串的編碼在內(nèi)存中的編碼是unicode的,雖然寫入文件時(shí)可能是gbk或者utf-8的print(ord("a")) #>>97print(ord("好")) #>>22920print(chr(22900)) #>>奴print(chr(97)) #>>a44字符串格式化x="Hello{0}{1:10},youget${2:0.4f}".format("Mr.","Jack",3.2)print(x)#>>HelloMr.Jack,youget$3.2000x="Hello{0}{1:>10},youget${2:0.4f}".format("Mr.","Jack",3.2)print(x)#HelloMr.Jack,youget$3.2000{序號(hào):寬度.精度類型}寬度可以是0>:右對(duì)齊<:左對(duì)齊^:中對(duì)齊如{0:>10.4f}表示第0項(xiàng)是小數(shù),以寬度至少是10字符,右對(duì)齊(寬度不足時(shí)空格補(bǔ)在左邊),保留小數(shù)點(diǎn)后面4位的方式輸出。45字符串格式化print("Todayis%s.%d."%('May',21))#TodayisMay.21.46f-string以f開頭的字符串可以將包含變量的表達(dá)式寫入其中用{}括起來(lái)a,b=4,5print(f"show:{a}+={a+b}")#>>show:4+5=947元組信息科學(xué)技術(shù)學(xué)院郭煒華山元組一個(gè)元組由數(shù)個(gè)逗號(hào)分隔的值組成,前后可加括號(hào)元組不能修改,即不可增刪元素,不可對(duì)元素賦值,不可修改元素順序(如排序)t=12345,54321,'hello!' #t是一個(gè)元組print(t[0]) #>>12345print(t) #>>(12345,54321,'hello!')u=t,(1,2,3,4,5)#u有兩個(gè)元素,都是元組print(u) #>>((12345,54321,'hello!'),(1,2,3,4,5))print(u[0][1]) #>>54321print(u[1][2]) #>>3t[0]=88888#運(yùn)行錯(cuò)誤,元組的元素不能賦值49元組元組的元素的內(nèi)容有可能被修改。例如,如果元素是列表,就可以修改該列表v=("hello",[1,2,3],[3,2,1])#[1,2,3]是列表v[1]=32#運(yùn)行錯(cuò)誤,元組元素不可修改成指向別的v[1][0]='world'#可以print(v) #>>('hello',['world',2,3],[3,2,1])print(len(v)) #>>3求長(zhǎng)度t=[1,2]d=(t,t) print(d) #>>([1,2],[1,2])t[0]='ok'print(d) #>>(['ok',2],['ok',2])50元組元組的元素的內(nèi)容有可能被修改。例如,如果元素是列表,就可以修改該列表v=("hello",[1,2,3],[3,2,1])#[1,2,3]是列表v[1]=32#運(yùn)行錯(cuò)誤,元組元素不可修改成指向別的v[1][0]='world'#可以print(v) #>>('hello',['world',2,3],[3,2,1])print(len(v))#>>3求長(zhǎng)度t=[1,2]d=(t,t) print(d) #>>([1,2],[1,2])51元組元組的元素的內(nèi)容有可能被修改。例如,如果元素是列表,就可以修改該列表t[0]='ok'print(d) #>>(['ok',2],['ok',2])t=8print(d) #>>(['ok',2],['ok',2])52元組元素的指針本質(zhì)元組的元素都是指針。元組元素不可修改,是指不可改變?cè)M元素的指向,但是元組元素指向的內(nèi)容,是有可能被修改的所謂的元組不可修改,類似于組建了一只球隊(duì),規(guī)定球隊(duì)人員不可更改,不可加減人,不可修改隊(duì)員號(hào)碼。但是隊(duì)員換個(gè)發(fā)型,增加體重,受傷缺胳膊少腿了,都是可以的53元組單元素的元組empty=() #空元組singleton='hello',

#注意末尾的,如果沒(méi)有,就不是元組而是字符串了print(len(empty)) #>>0print(len(singleton)) #>>1x=('hello',)#無(wú)逗號(hào)則x為字符串print(x) #>>('hello',)54元組用下標(biāo)訪問(wèn)元組,以及元組切片用法和字符串一樣tup1=('Google','Runoob',1997,2000)tup2=(1,2,3,4,5,6,7)print(tup1[0]) #>>Googleprint(tup2[1:5])#>>(2,3,4,5)print(tup2[::-1]) #>>(7,6,5,4,3,2,1)print(tup2[-1:0:-2]) #>>(7,5,3)55元組可以對(duì)元組進(jìn)行連接組合tup1=(12,34.56);tup2=('abc','xyz')#創(chuàng)建一個(gè)新的元組tup3=tup1+tup2print(tup3)#>>(12,34.56,'abc','xyz')tup3+=(10,20)#等價(jià)于tup3=tup3+(10,20),新建了一個(gè)元組print(tup3)#>>(12,34.56,'abc','xyz',10,20)56元組元組運(yùn)算和迭代x=(1,2,3)*3print(x)#>>(1,2,3,1,2,3,1,2,3)print(3in(1,2,3))#>>Trueforiin(1,2,3):print(i,end="")#>>12357元組賦值x=(1,2,3)b=xprint(bisx)#trueis表示兩個(gè)操作數(shù)是否指向同一個(gè)東西,即是否是同一個(gè)對(duì)象x+=(100,)#等價(jià)于x=x+(100,)新建了一個(gè)元組

print(x) #(1,2,3,100)print(b) #(1,2,3)58元組比大小兩個(gè)元組比大小,就是逐個(gè)元素比大小,直到分出勝負(fù)。如果有兩個(gè)對(duì)應(yīng)元素不可比大小,則出runtimeerror。print((1,'a',12)<(1,'b',7)) #>>Trueprint((1,'a')<(1,'a',13)) #>>Trueprint((2,'a')>(1,'b',13)) #>>Trueprint((2,'a')<('ab','b',13))#runtimeerror59t=(1,[2,3],4,5)接下來(lái)以下哪條語(yǔ)句不正確t[0]=2t=("a",2,3)t[1][0]="a"t+=(1,2)BCD提交A單選題1分此題未設(shè)置答案,請(qǐng)點(diǎn)擊右側(cè)設(shè)置按鈕t=(1,[2,3],4,5)接下來(lái)以下哪條語(yǔ)句不正確t[0]=2t=("a",2,3)t[1][0]="a"t+=(1,2)ABCD提交單選題1分a=[1,2,3]b=(a,a)b[0][1]=100print(a,b)上面程序輸出結(jié)果是:[1,2,3]([1,100,3],[1,2,3])[1,100,3]([1,100,3],[1,100,3])[1,2,3]([1,100,3],[1,100,3])程序有錯(cuò),無(wú)法運(yùn)行ACD提交B單選題1分此題未設(shè)置答案,請(qǐng)點(diǎn)擊右側(cè)設(shè)置按鈕a=[1,2,3]b=(a,a)b[0][1]=100print(a,b)上面程序輸出結(jié)果是:[1,2,3]([1,100,3],[1,2,3])[1,100,3]([1,100,3],[1,100,3])[1,2,3]([1,100,3],[1,100,3])程序有錯(cuò),無(wú)法運(yùn)行ABCD提交單選題1分用元組(列表)取代復(fù)雜分支結(jié)構(gòu)信息科學(xué)技術(shù)學(xué)院郭煒德國(guó)天鵝堡用元組(或列表)取代復(fù)雜分支結(jié)構(gòu)輸入1-7,輸出星期幾weekdays="Monday","Tuesday","Wednesday","Thursday",\"Friday","Saturday","Sunday"n=int(input())ifn>7orn<1: print("Illegal")else: print(weekdays[n-

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論