Python基礎(chǔ)知識點(diǎn)總結(jié)_第1頁
Python基礎(chǔ)知識點(diǎn)總結(jié)_第2頁
Python基礎(chǔ)知識點(diǎn)總結(jié)_第3頁
Python基礎(chǔ)知識點(diǎn)總結(jié)_第4頁
Python基礎(chǔ)知識點(diǎn)總結(jié)_第5頁
已閱讀5頁,還剩30頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

Python基礎(chǔ)知識與常用數(shù)據(jù)類型一、Python概述:1.1、Python的特點(diǎn):1、Python是一門面向?qū)ο蟮恼Z言,在Python中一切皆對象2、Python是一門解釋性語言3、Python是一門交互式語言,即其在終端中進(jìn)行命令編程4、Python是一門跨平臺的語言【沒有操作系統(tǒng)的限制,在任何操作系統(tǒng)上都可以運(yùn)行Python代碼】5、Python擁有強(qiáng)大和豐富的庫,又被稱為膠水語言,能把其他語言(主要C/C++)寫的模塊很輕松的結(jié)合在一起1.2、Python的優(yōu)缺點(diǎn):1、優(yōu)點(diǎn):a、易于維護(hù)和學(xué)習(xí)b、廣泛的標(biāo)準(zhǔn)庫【提供了大量的工具】c、可擴(kuò)展性d、Python對于大多數(shù)據(jù)庫都有相應(yīng)的接口【Mysql、sqlites3,MongoDB.Redis等】e、支持GUI編程【圖形化界面】f、語法簡單,易于學(xué)習(xí)print(v%dx%d%d/zprint(v%dx%dtemp+=1print(〃〃)line+=1break:直接跳出當(dāng)前循環(huán)continue:結(jié)束當(dāng)前正在執(zhí)行的循環(huán),繼續(xù)下一次循環(huán)三.Python內(nèi)置數(shù)據(jù)結(jié)構(gòu):Python中最基本的數(shù)據(jù)結(jié)構(gòu)是序列(sequence),Python包含6中內(nèi)建的序列,包括列表、元組、字符串、Unicode字符串、buffer對象和xrange對象。31.String3.1.1,字符串的創(chuàng)立將文本放在單引號,雙引號和三引號之間>>>strl='hello,fanison'>>>type(strl)str3.1.2.字符串的轉(zhuǎn)義:字符串的轉(zhuǎn)義使用r.字符串的切片操作索引運(yùn)算符s[i]返回一個序列的元素i切片運(yùn)算符S[i:j]返回一個在字符串中從第i個元素開始到j(luò)-l之間的元素?cái)U(kuò)展切片運(yùn)算符s[i:j:step]在字符串中以step的步長從第i個到j(luò)-l個元素之間的元素,step為正數(shù)表示正著取,i<i或者說倒著取len(s)s中的元素個數(shù)min(s)s的最小值max⑸s的最大值4字符串的相關(guān)方法:s.index(sub[,start[,end]])找到指定字符串sub首次出現(xiàn)的位置s.find(str,beg=Ozencl=len(string))找到字符串sub首次出現(xiàn)位置,與index不同是不報(bào)錯而返回-1s.upperQ將一個字符串轉(zhuǎn)換為大寫形式s.lower()將一個字符串轉(zhuǎn)化為小寫形式s.join⑴使用s作為分隔符連接序列t中的字符串s.stripO將s兩邊不顯示的符號去掉之后返回(Istrip、rstrip)s.split(t)獲取以字符t將s切割的列表s.encode()獲取s的指定編碼的bytes值bytes.decode()獲取bytes的對應(yīng)編碼的字符串,在python2中使用decode函數(shù)s.endswith(suffix,beg=O,end=len(string))檢查中是否以suffix字符串結(jié)尾3.2list變量:相當(dāng)于是一個容器,每次只能存儲一個數(shù)據(jù)作用:相當(dāng)于是一個容器,可以同時存儲多個數(shù)據(jù)本質(zhì):一種有序的集合【有序:數(shù)據(jù)的存放順序和底層存儲的順序是相同】列表中的元素本質(zhì)存儲的是一個變量【引用】,列表是可變的【一個列表一旦被定義,那么在代碼運(yùn)行的過程中,其中的元素的值可以隨時發(fā)生改變】num二10listl=[43,5,45,46,5]print(id(listl[O]))listl[0]=1001.創(chuàng)立【定義一個列表類型的變量】命名方式:Ixxlistxxx,不建議直接使用list其中允許存放重復(fù)元素listl=[45,23,2,54,54,6]print(listl)其中允許存放不同類型的數(shù)據(jù)list2=[//heHo,;4637,False]print(list2)列表元素的訪問索引/下標(biāo)/角標(biāo):取值范圍:OlenGx)-1或者-(len(xxx))print(listl[3])print(listl[-1])ttprint(listl[20])ttlndexError:listindexoutofrange列表下標(biāo)越界列表元素的替換/修改listl[3]=473print(listl)組合:生成了一個新的列表print(listl+list2)print(listl)列表元素的重復(fù)print(listl*3)print(listl)判斷某個元素是否在列表中print(10inlistl)#Falseprint(10notinlistl)#Trueprint(45inlistl)#Trueprint(45notinlistl)#False列表切片【截取】:根據(jù)指定的列表獲取子列表list3=[45,23,2,473,54,6,5,6,56,5]print(list3[2])print(list3)格式:列表名[start:end:step],包頭不包尾獲取從指定下標(biāo)開始到結(jié)尾的元素組成的一個子列表print(list3[2:])獲取從開頭到指定下標(biāo)的元素。。。。print(list3[:6])截取指定區(qū)間print(list3[2:6])特殊情況1:如果end超出了下標(biāo)的范圍,那么默認(rèn)獲取從指定下標(biāo)開始到結(jié)尾的元素print(list3[4:100])等價于print(list3[4:])特殊情況2:step在默認(rèn)情況下為1print(list3[l:6:2])#1,3,5print(list3[-1:-6])#當(dāng)start和end都為負(fù)數(shù),step為正數(shù)的時候,獲取的結(jié)果為口#當(dāng)#當(dāng)start,end和step都為負(fù)數(shù)的#當(dāng)start,end和step都為負(fù)數(shù)的#當(dāng)start,end和step都為負(fù)數(shù)的print(list3[-l::-1])print(list3[::-1])并列表系統(tǒng)功能1.添加元素1.lappend,追加,在列表的末尾添加元素常用11=[22,33,44,55]print(11)追加單個元素11.append(66)print(11)#追加多個元素,不能直接追加,通過列表的形式追加,形成了一個二維列表#11.append(77,88)#報(bào)錯:TypeError:append()takesexactlyoneargument(2given).append([77,88])print(11)#結(jié)果:[22,33,44,55,66,[77,88]]#1.2extend,擴(kuò)展,在列表的末尾添加元素=[22,33,44,55]追加單個元素,不能直接添加,參數(shù)一定是可迭代的12.extend(66)#T報(bào)錯:ypeError:'int'objectisnotiterable12.extend([66])print(12)12.extend([77,88])print(12)#結(jié)果:[22,33,44,55,66,77,88]總結(jié):列表名.功能名(xx)append可以直接添加單個元素,而extend不能append在添加多個元素的時候,是以列表的形式添加,而extend只添加元素【打碎加入】1.3insert,插入,在指定索引處插入一個元素,后面的元素向后順延列表名.insert(索引,被插入的元素)13=[22,33,44,55]插入單個元素13.insert(2,66)print(13)#插入多個元素:和append類似,將整個列表直接插入13.insert(1,[77,88])print(13)2.刪除2.Ipop,彈出,移除并獲取列表中指定索引處的元素在棧中【列表的底層工作原理是?!縧istl=[11,22,33,44,55]注意:pop在默認(rèn)情況下刪除的是最后一個元素resultl=listl.pop()print(listl)print(resultl)result2=listl.pop(2)print(listl)2.2remove,移除,直接操作的是元素list2=[11,22,33,44,55,33,33,55]list2.remove(22)print(list2)注意:移除指定元素在列表中第一次匹配到的元素【從左往右】list2.remove(33)print(list2)2.3clear清除,將指定列表變?yōu)榭樟斜硎褂脠鼍埃貉h(huán)中,每次需要清空【重置】列表list2.clear()print(list2)3.獲取listl=[54,6,57,5,57,7,6,7,57]3.lien(),獲取列表長度1二len(listl)3.2111ax(),獲取列表中的最大值print(max(listl))3.3min(),獲取列表中的最小值print(min(listl))練習(xí):模擬max或者min的功能,求三個數(shù)中的最大值假設(shè)法numl=43num2=437num3二2定義一個變量,用于記錄最大值maxi=numlifnum2max1=ifnum3maxi=>numl:num2>maxi:num33.4index(),獲取指定元素在原列表中第一次匹配到的索引print(listl.index(57))模擬index的功能foriinrange(len(listl)):iflistl[i]==57:print(i)3.5count(),統(tǒng)計(jì)個數(shù),統(tǒng)計(jì)指定元素在列表中出現(xiàn)的次數(shù)c=listl.count(57)print(c)listl=[54,6,57,5,57,7,6,7,57,57,57,436]練習(xí):將listl中57給全部刪除listl.remove(57)fflistl.remove(57)listl.remove(57)print(listl)統(tǒng)計(jì)57在列表中出現(xiàn)的次數(shù)num=57c=listl.count(num)n=1whilen〈二c:listl.remove(num)n+=1print(listl)importcopy4.其他用法4.1.reverse,反轉(zhuǎn)listl=[35,4,5,4,654]ttprint(listl[::-l])ttlistl.reverse()#print(listl)4.2.Isort,排序,默認(rèn)為升序,在列表內(nèi)部進(jìn)行排序列表名.sort()升序listl.sort()#print(listl)降序listl.sort(reverse=True)ttprint(listl)4.2.2sorted,排序,默認(rèn)為升序,生成了一個新的列表^sorted(列表名)升序newList=sorted(listl)print(listl)print(newList)降序newList2=sorted(listl,reverse=True)print(newList2)根據(jù)元素的長度進(jìn)行排序list2=[〃gjsrghj〃,〃545〃,〃fhghg〃,〃ahjegrhkwjhgrke〃]#key關(guān)鍵字參數(shù)可以指定自定義的排序規(guī)那么,格式:key=函數(shù)名newList3=sorted(list2,key=len,reverse二True)print(newList3)4.3copy,拷貝直接賦值,淺拷貝,??臻g層面上的拷貝【引用】listl=[23,54,56]list2=listllist2[l]=100print(listl)print(list2)print(id(listl)==id(list2))copy,深拷貝,堆空間層面上的拷貝【實(shí)體】listl=[23,54,56]list2=listl.copy()list2[l]=100print(listl)print(list2)print(id(listl)二二id(list2))

模塊copy,copy(),deeepcopy()【面試題】內(nèi)容角度上的拷貝,copy只拷貝最外層,deepcopy可以拷貝內(nèi)層的內(nèi)容【二維列表中】a=[1,2,3]b=[4,5,6]c=[a,b]print(c)d=copy,copy(c)print(id(d)==id(c))#Falsee=copy.deepcopy(c)print(id(e)==id(c))WFalsea.append(4)print(c)print(d)print(e)a.append(4)print(c)print(d)print(e)a.append(4)print(c)print(d)print(e)2,2,3,3],4],

[4,a.append(4)print(c)print(d)print(e)2,2,3,3],4],

[4,[4,5,6]]5,6]]d:[[l,2,3],[4,5,6]]list2:[4,5,6]list2:[4,5,6]list2:[4,5,6][listl,list2]——[1,2,3]4.4轉(zhuǎn)換list2:[4,5,6]#list(),tuple()二維列表:遍歷11二[[11,22,33,44],[44,55,66]]print(ll[0])#11[0]=[11,22,33,44]print(11[0][2])foriin11:forjini:print(j)fornlinrange(len(11)):forn2inrange(len(11[nl])):print(11[nl][n2])3.3tuple2、缺點(diǎn):a、和C語言相比擬Python的代碼運(yùn)行速度慢b、代碼無法加密1.3、Python代碼的執(zhí)行過程:大致流程:源碼編譯為字節(jié)碼(.pyc)-——>Python虛擬機(jī)>執(zhí)行編譯好的字節(jié)碼Python虛擬機(jī)將字節(jié)碼翻譯成相對應(yīng)的機(jī)器指令(機(jī)器碼)。Python程序運(yùn)行時,先編譯字節(jié)碼并保存到內(nèi)存中,當(dāng)程序運(yùn)行結(jié)束后,Python解釋器將內(nèi)存中的字節(jié)碼對象寫到.pyc文件中。第二次再運(yùn)行時,先從硬盤中尋找.pyc文件,如果找到,那么直接載入,否那么重復(fù)上面過程。優(yōu)點(diǎn):不重復(fù)編譯,提高執(zhí)行效率二、Python中的基礎(chǔ)語法:Python中變量在內(nèi)存中的存儲引用和對象:對象:當(dāng)創(chuàng)立數(shù)據(jù)對象時,在內(nèi)存中會保存對象的值,這個值就是對象自己;引用:對象保存在內(nèi)存空間,外部想要使用對象的值,就需要使用引用來操作對象。內(nèi)存中會保存對象引用的數(shù)量,當(dāng)某個對象的引用為0時,對象會被回收??勺償?shù)據(jù)類型和不可變數(shù)據(jù)類型a、數(shù)據(jù)分類:和列表類似,本質(zhì)是一種有序的集合元組和列表的不同之處:a.定義不同:列表口元組()b.是否能夠修改:列表可以進(jìn)行增加或者刪除元素的操作,但是,元組一旦被定義之后,其中的元素將不能進(jìn)行任何的更改其中允許存儲重復(fù)元素tl=(23,53,54,53)print(tl)其中允許存儲不同類型的數(shù)據(jù)t2=rhello,z,47,19.0,False)print(t2)特殊情況:當(dāng)一個元組中只有一個元素的之后,會被識別為一個普通變量t3=(10)print(type(t3))print(t3)為了消除歧義,當(dāng)元組中只有一個元素的時候,元組名=(元素,)t4=(10,)print(type(t4))print(t4)元組元素的訪問元組名[索引]print(t2[1])t2[l]=100#報(bào)錯:TypeError:'tuple'objectdoesnotsupportitemassignment【賦值】特殊情況:如果在元組中的元素是列表,那么列表中的元素依舊可以修改【依據(jù):元組和列表中存儲都是變量的地址,元素不允許修改,只需要保證未發(fā)生改變即可其中的地址】t5二(23,5,3,5,[235,345,5,45,4])print(t5)print(t5[4])#[235,345,5,45,4]t5[4][1]=100print(t5)列表和元組的遍歷直接獲取元素forelementint5:print(element)獲取索引foriinrange(len(t5)):print(i,t5[i])同時遍歷索引和元素需要將元組或者列表轉(zhuǎn)換為枚舉類型list(t5)#注意:下面的i并不是元組或者列表的索引,而是枚舉中的編號fori,elementinenumerate(t5):print(i,element)3.4dict常用也是一種存儲數(shù)據(jù)的方式,但是字典是無序的,類似于list或者tuple,但是,字典采用鍵-值對的方式存儲數(shù)據(jù)agel=10listl=[10,4,35,46,6]dictl={〃zhangsan〃:10}作用:具有極快的查找速度鍵【key】相當(dāng)于list或者tuple中的索引key的特點(diǎn)a.字典的key是唯一的【key不允許重復(fù)】b.key必須為不可變的數(shù)據(jù)list是可變的,不能用來當(dāng)做keytuple,數(shù)字型,字符串,布爾值都是不可變的,可以被充當(dāng)keydictl={〃zhangsan〃:10,〃lisi〃:13,“zhaoliu”:50}1.訪問鍵值對print(dictl[〃lisi〃])并訪問一個不存在的key,那么報(bào)錯ttprint(dictl[〃abc〃])#KeyError:'abc,字典是可變的dictl[/zzhaoliuz,]=100resultO=dictl[〃zhaoliu〃]print(resultO)字典名[key]=value注意:如果key存在,那么表示修改value的值;如果key不存在,那么表示在字典中添加一對新的鍵值對dictl[〃abc〃]=20print(dictl)#get()resultl=dictl.get(〃zhaoliu〃)print(resultl)如果key不存在,那么不會報(bào)錯,返回None,一般用于判斷result2=dictl.get(〃def〃)print(result2)2,刪除,pop注意:刪除指定的key,對應(yīng)的value也會隨著刪除dictl.pop(〃lisi〃)print(dictl)3.字典的遍歷3.1直接遍歷key掌握forkeyindictl:print(key,dictl[key])print(dictl.keys())print(type(dictl.keys()))#<class'dict_keys'>forkeyindictl.keys():print(key,dictl[key])3.2直接遍歷valueforvalueindictl.values():print(value)3.3,遍歷的是鍵值對的編號和keyfori,elementinenumerate(dictl):print(i,element)3.4同時遍歷key和value掌握forkey,valueindictl.items():print(key,value)〃〃〃【面試題:diet和list之間的區(qū)別】diet查找和插入的速度不會因?yàn)閗ey-value的增多而變慢,而list在每次查找的時候都是從頭到尾進(jìn)行遍歷,當(dāng)數(shù)據(jù)量大的時候,list速度肯定會變慢diet需要占用大量的內(nèi)存空間,內(nèi)存浪費(fèi)多,而list只相當(dāng)于存儲了字典中的key或者value,并且list數(shù)據(jù)是緊密排列的〃〃〃練習(xí):〃〃//〃.逐一^顯不列表=[〃Sun〃,〃Mon〃,〃Tue〃,〃Wed〃,〃Thu〃,〃Fri〃,〃Sat〃]中索引為奇數(shù)的元素.將屬于列表n「〃C〃“7〃〃T〃〃Iir1〃〃T1〃〃廠?〃〃CJ〃-1LSun,Mon,Tue,Wed,Thu,rri,SatJ,但不屬于列表12二[〃Sun〃,〃Mon〃,〃Thu〃,〃Fri〃,〃Sat〃]的所有元素定義為一個新列表13.列表namelist=[,stul'Jstu2',‘stu3',‘stu4',‘stu5',‘stu6','stu7'],刪除列表removelist=['stu3','stu7','stu9'];請將屬于removelist列表中的每個元素從namelist中移除(屬于removelist,但不屬于namelist的忽略即可);.有一個字符串是一句英文,統(tǒng)計(jì)每個單詞出現(xiàn)的次數(shù),生成一個字典,單詞作為key,次數(shù)作為value生成一個字典dictl.列表listl=[0,1,2,3,4,5,6],list2=[〃Sun〃,〃Mon〃,〃Tue〃,〃W1〃〃T1〃〃L?〃〃Cj〃1ed,Ihu,rri,SatJ,以listl中的元素作為key,list2中的元素作為value生成一個字典dict2〃〃〃#1.U「〃小〃〃〃〃T〃//U71〃〃F1〃〃「?〃〃c/〃1=LSun,Mon,Tue,Wed,Thu,Fri,SatJforiinrange(len(11)):ifi%2!=0:print(11[i])#2.#思路:遍歷n,獲取ii中的元素,判斷在12中是否存在,如果不存在,那么添加到一個新的列表中U「〃小〃〃〃〃T〃Z/TT71〃〃F1〃〃「?〃〃c/〃1=LSun,Mon,Tue,Wed,Thu,Fri,SatJIC「〃C〃〃一〃〃T1〃〃L?〃〃C,〃1=LSun,Mon,Thu,Fri,Sat=[]forelelin11:ifelelnotin12:13.append(elel)3#思路:遍歷removelist,獲取其中的元素,判斷該元素在namelist中是否存在,如果存在,那么刪除namelist=[JstuTJstu2',‘stu3',‘stu4',‘stu5',‘stu6','stu7,■removelist=[,stu3','stu7,,'stu9,]forele2inremovelist:ifele2innamelist:namelist,remove(ele2)print(namelist)4strl="todayisagooddaytodayisabadday,todayisaniceday”dictl={}使用空格切割字符串listl=strl.split(,z〃)print(listl)遍歷列表,獲取其中的每個單詞forwordinlistl:在字典中通過key獲取valuec二dictl.get(word)ifc==None:#不存在,添加鍵值對dictl[word]=1else:#存在,那么將value的值遞增1dictl[word]+=1print(dictl)#5.listl=[0,1,2,3,4,5,6]listz=LSun,Mon,lue,Wed,Thu,Fri,SatJdict2={}#定義一個變量,作為listl和list2的索引indexl=0iflen(listl)==len(list2):whileindexl<len(listl):#dict2[key]=value=======>dict2[listl中的元素]=list2中的元素ttlistl[indexl]list2[indexl]dict2[listl[indexl]]=list2[indexl]indexl十二1eliflen(listl)>len(list2):whileindexl<len(list2):dict2[listl[indexl]]=list2[indexl]indexl十二1else:whileindexl<len(listl):dict2[listl[indexl]]=list2[indexl]indexl十二1#優(yōu)化上面的代碼:封裝【抽取】〃〃〃defcustom(num):dict2[listl[num]]二list2[num]num+=1returnnum#定義一個變量,作為listl和list2的索引indexl=0iflen(listl)二二len(list2):whileindexl<len(listl):#dict2[key]=value=======>dict2[listl中的元素]=list2中的元素ttlistl[indexl]list2[indexl]custom(indexl)r=indexl=rcustom(indexl)eliflen(listl)>len(list2):whileindexl<len(list2):r=custom(indexl)indexl=relse:whileindexl<len(listl):r=custom(indexl)indexl=r〃〃〃print(dict2)3.4set集合:不允許重復(fù)元素,而且進(jìn)行交集以及并集的運(yùn)算表示:{}和diet之間的關(guān)系:set中只是存儲了key本質(zhì):無序且無重復(fù)元素的集合1.創(chuàng)立set()si={23,45,6,7,89}print(si)print(type(si))并掌握:去除列表中的重復(fù)元素s2=set([3,46,5,65,7,65,7])print(s2)s3=set((2,43,54,5,4,5))print(s3)s4=set({10:"a",20:"b"})print(s4)2.set是可變的2.1添加add(),添加,setl={11,22,33,44,55}單個元素setl.add(66)print(setl)如果元素存在,那么添加失敗,不報(bào)錯setl.add(55)多個元素sl.add([77,88])#TypeError:unhashabletype:'list,si.add((77,88))sl.add({l:〃a〃})結(jié)論:在set中,使用add添加,那么只能添加元組,不能添加list和dietprint(si)#update(),更新,update的參數(shù)只能是可迭代對象【打碎加入】set2={11,22,33,44,55}set2.update(66)#報(bào)錯:TypeError:'int'objectisnotiterableset2.update([66])print(set2)set2.update((77,88))print(set2)set2.update({“12〃:12,“13〃:13})print(set2)set2.update(〃hgjhg〃)print(set2)3.刪除set2.remove(77)print(set2)4.交集和并集si={3,54,4,5,7}s2={3,54,4,8,90)交集:&【按位與】print(si&s2)并集:I【按位或】print(si|s2)list、tuple、diet、set的區(qū)別和聯(lián)系:a、定義方式:list:[]xtuple:()、diet:{}、set:(}b、是否有序:list:有序,tuple:有序,diet:無序,set:無序c、是否允許出現(xiàn)重復(fù)元素:list:允許,tuple:允許,diet:key鍵值不允許,但是value的值允許,set:不允許d、都屬于可迭代對象e、set相當(dāng)于存儲了字典中的keyf、可以向互轉(zhuǎn)化4、附錄字符串轉(zhuǎn)義字符表在需要在字符中使用特殊字符時,python用反斜杠()轉(zhuǎn)義字符。如下表:轉(zhuǎn)義字符描述(在行尾時)續(xù)行符\反斜杠符號\,單引號\"雙引號\a響鈴\b退格(Backspace)描述轉(zhuǎn)義字符\e轉(zhuǎn)義描述\000空\n換行\(zhòng)v縱向制表符\t橫向制表符\r回車\f換頁\oyy八進(jìn)制數(shù),yy代表的字符,例如:\ol2代表換行\(zhòng)xyy十六進(jìn)制數(shù),yy代表的字符,例如:\xOa代表換行\(zhòng)other其它的字符以普通格式輸出python字符串格式化符號表符號描述%c格式化字符及其ASCII碼%s格式化字符串%d格式化整數(shù)%u格式化無符號整型%o格式化無符號八進(jìn)制數(shù)%x格式化無符號十六進(jìn)制數(shù)可變數(shù)據(jù)對象:列表(list)和字典(diet)不可變數(shù)據(jù)對象:整型(int)、浮點(diǎn)型(float)、字符串(string)和元組類型(tuple)注:此處的可變和不可變,是指內(nèi)存中的對象(Value)是否可以改變,對于不可變類型的對象,在對對象操作的時候,必須在內(nèi)存中重新申請一塊新的區(qū)域,即重新給一個新的地址用于存儲;對于可變類型的對象,在對對象操作的時候,并不會重新申請新的地址,而是在該對象的地址后面繼續(xù)申請即可,即address并不會改變,而是address的區(qū)域的大小會變長或變短。不可變數(shù)據(jù)類型:對象本身的值不可變,如果改變了變量的值,相當(dāng)于新建了一個對象,而對于相同值的對象,在內(nèi)存中只有一個對象??勺償?shù)據(jù)類型:允許變量的值進(jìn)行改變,對于變量給值的過程中,只是改變了變量的值,而不會新建一個對象,所以可變數(shù)據(jù)類型的意思就是說對一個變量進(jìn)行操作時,其值是可變的,值的變化并不會引起新建對象,即地址是不會變的,只是地址中的內(nèi)容變化了或者地址得到了擴(kuò)充。,不過對于相同的值的不同對象,在內(nèi)存中那么會存在不同的對象,即每個對象都有自己的地址,相當(dāng)于內(nèi)存中對于同值的對象保存了多份,這里不存在引用計(jì)數(shù),是實(shí)實(shí)在在的對象。.3引用傳遞和值傳遞(函數(shù)傳值)說明:可變對象為引用傳遞,不可變對象為值傳遞引用傳遞:傳遞列表或者字典時,如果改變引用的值,就修改了原始的對象defcheck(1):print(1)print(id(l))1.append([1,23,2,3,4])描述%x格式化無符號十六進(jìn)制數(shù)(大寫)%f格式化浮點(diǎn)數(shù)字,可指定小數(shù)點(diǎn)后的精度%e用科學(xué)計(jì)數(shù)法格式化浮點(diǎn)數(shù)%E作用同%e,用科學(xué)計(jì)數(shù)法格式化浮點(diǎn)數(shù)%g%f和%0的簡寫%G%f和%E的簡寫%p用十六進(jìn)制數(shù)格式化變量的地址4.3格式化操作符輔助指令表符號功能*定義寬度或者小數(shù)點(diǎn)精度-用做左對齊+在正數(shù)前面顯示加號(+)<sp>在正數(shù)前面顯示空格在八進(jìn)制數(shù)前面顯示零(U),在十六進(jìn)制前面顯示‘Ox'或者'0X'(取決于用#的是乂還是X)0顯示的數(shù)字前面填充。而不是默認(rèn)的空格%'%%輸出一個單一的‘%'(var)映射變量(字典參數(shù))符號功能mnm是顯示的最小總寬度,n是小數(shù)點(diǎn)后的位數(shù)(如果可用的話)4.4字符串內(nèi)建方法表序號方法描述1capitalizeQ2center(width,fillchar)3count(str,beg=Ozend=len(stnng))bytes.decode(encoding=nutf-8',z**4errors="strict”)將字符串的第一個字符轉(zhuǎn)換為大寫返回一個指定的寬度width居中的字符串,fillchar為填充的字符,默認(rèn)為空格。返回str在string里面出現(xiàn)的次數(shù),如果beg或者end指定那么返回指定范圍內(nèi)str出現(xiàn)的次數(shù)Python3中沒有decode方法,但我們可以使用bytes對象的decode()方法來解碼給定的bytes對象,這個bytes對象可以由str.encodeQ來編碼返回。**5encode(encoding=,UTF-8,/errors=,strict1)以encoding指定的編碼序號方法描述格式編碼字符串,如果出錯默認(rèn)報(bào)一個ValueError的異常,除非errors指定的是'ignore'或者'replace'檢查字符串是否以。切結(jié)束,如果beg或者end指**6endswith(suffix,beg=Ozend=len(string))定那么檢查指定的范圍內(nèi)是否以obj結(jié)束,如果是,返回True,否那么返回False.把字符串string中的tab7expandtabs(tabsize=8)符號轉(zhuǎn)為空格,tab符號默認(rèn)的空格數(shù)是80檢測str是否包含在字符串中,如果指定范圍beg和**8find(str,beg=0end=len(string))end,那么檢查是否包含在指9index(strzbeg=Ozend=len(string))定范圍內(nèi),如果包含返回開始的索引值,否那么返回-1跟9index(strzbeg=Ozend=len(string))個異常.序號方法描述10isalnumQ11isalphaQ12isdigitQ13islowerQ14isnumericQ15isspaceQ如果字符串至少有一個字符并且所有字符都是字母或數(shù)字那么返回True,否那么返回False如果字符串至少有一個字符并且所有字符都是字母那么返回True,否那么返回False如果字符串只包含數(shù)字那么返回True否那么返回False..如果字符串中包含至少一個區(qū)分大小寫的字符,并且所有這些(區(qū)分大小寫的)字符都是小寫,那么返回True,否那么返回False如果字符串中只包含數(shù)字字符,那么返回True,否那么返回False如果字符串中只包含空白,那么返回True,否那么返回False.序號方法描述17isupper()**18join(seq)*19len(string)20ljust(width[,fillchar])21lower()如果字符串是標(biāo)題化的(見title。)那么返回True,否那么返回False如果字符串中包含至少一個區(qū)分大小寫的字符,并且所有這些(區(qū)分大小寫的)字符都是大寫,那么返回True,否那么返回False以指定字符串作為分隔符,將seq中所有的元素(的字符串表示)合并為一個新的字符串返回字符串長度返回一個原字符串左對齊,并使用fillchar填充至長度width的新字符串,fillchar默認(rèn)為空格。轉(zhuǎn)換字符串中所有大寫字符為小寫.22IstripQ截掉字符串左邊的空格或指描述序號方法描述定字符。創(chuàng)立字符映射的轉(zhuǎn)換表,對于接受兩個參數(shù)的最簡單的調(diào)用方式,第一個參數(shù)是字*23maketrans()符串,表示需要轉(zhuǎn)換的字符,第二個參數(shù)也是字符串表示轉(zhuǎn)換的目標(biāo)。返回字符串str中最大的字24max(str)母。返回字符串str中最小的字25min(str)母。把將字符串中的strl替換*26replace(old,new[,max])成str2,如果max指定,貝U替換不超過max次。類似于find。函數(shù),不過是rfind(str,beg=O,end=len(string))從右邊開始查找.類似于index(),不過是從右rindex(str,beg=O,end=len(string))邊開始.返回一個原字符串右對齊,并29rjust(width,[,fillchar])使用fillchar(默認(rèn)空格)填充

序號序號序號方法描述至長度width的新字符串序號方法描述刪除字符串字符串末尾的空30rstripO格.num=string.count(str))以str為分隔符截取字符串,如*31split(str="",num=string.count(str))果num有指定值,那么僅截取num個子字符串按照行\(zhòng)n')分隔,返回一個包含各行作為元素的列表,如果參數(shù)*32splitlines([keepends])keepends為False,不包含換行符,如果為True,那么保存換行符。檢查字符串是否是以??砷_頭,是那么返回True,否那么*33startswith(str,beg=O,end=len(string))返回False0如果beg和end指定值,那么在指定范圍內(nèi)檢查。**34strip([chars])在字符串上執(zhí)行l(wèi)strip()和rstripO

序號**34strip([chars])序號序號方法描述將字符串中大寫轉(zhuǎn)換為小序號方法描述swapcase()寫,小寫轉(zhuǎn)換為大寫返回"標(biāo)題化"的字符串,就是說所有單詞都是以大寫開title()始,其余字母均為小寫(見istitleO)根據(jù)str給出的表(包含256個字符)轉(zhuǎn)換string的**37translate(table,deletechars="。字符,要過濾掉的字符放到deletechars參數(shù)中38upperQ39zfill(width)38upperQ39zfill(width)40isdecimalQ轉(zhuǎn)換字符串中的小寫字母為大寫返回長度為Width的字符串,原字符串右對齊,前面填充0檢查字符串是否只包含十進(jìn)制字符,如果是返回true,否那么返回false。備注:*標(biāo)記為相關(guān)內(nèi)建函數(shù),**標(biāo)記為常用方法。4.5Python列表函數(shù)&方法

Python包含以下函數(shù):序號函數(shù)描述[len(list)列表元素個數(shù)[max(list)返回列表元素最大值[min(list)返回列表元素最小值[list(seq)將元組轉(zhuǎn)換為列表Python包含以下方法:描述方法list.append(obj)描述list.append(obj)list.count(obj)list.extend(seq)list.index(obj)list.insert(index,obj)list.pop([index=-l])list.remove(obj)list.append(obj)list.count(obj)list.extend(seq)list.append(obj)list.count(obj)list.extend(seq)list.index(obj)list.insert(index,obj)list.pop([index=-l])list.remove(obj)在列表末尾添加新的對象統(tǒng)計(jì)某個元素在列表中出現(xiàn)的次數(shù)在列表末尾一次性追加另一個序列中的多個值(用新列表擴(kuò)展原來的列表)從列表中找出某個值第一個匹配項(xiàng)的索引位置將對象插入列表移除列表中的一個元素(默認(rèn)最后一個元素),并且返回該元素的值移除列表中某個值的第一個匹配項(xiàng)8list.reverseQ8list.reverseQ反向列表中兀素8list.reverseQ反向列表中兀素描述方法a描述list.sort(cmp=None/key=None,對原列表進(jìn)行排序reverse=False)list.clear()清空列表list.copyQ復(fù)制列表return11二:1,2,3,4]print(check(1))print(id(l)),,,[1,2,3,4]2902500909320[1,2,3,4,[1,23,2,3,4]]2902500909320,,,值傳遞:當(dāng)傳遞不可變對象時,如果改變引用變量的值,只是創(chuàng)立了不同的對象,原始對象并沒有改變。defcheck(s):print(s)print(id(s))s=iamtestprint(id(s))returnss="Thisisatest”print(check(s))print(s),,,ThisisatestiamtestThisisatest,,,深拷貝和淺拷貝淺拷貝:語法:copy.copyO,淺拷貝是創(chuàng)立了一個和原對象一樣的類型,但是其內(nèi)容是對原對象元素的引用。深拷貝:語法:copy.deepcopyO在內(nèi)存中將所有的數(shù)據(jù)重新建立一份。變量的本質(zhì):在內(nèi)存中開辟了一塊空間,其中存儲了指定類型的數(shù)據(jù)【實(shí)體(對象)存儲在堆中,變量(引用)存儲在??臻g中基本數(shù)據(jù)類型Python中常用的數(shù)據(jù)類型有:整型(int)、浮點(diǎn)型(float),字符串(string)、空值(None)、布爾值(True和False)、復(fù)數(shù)、類、函數(shù)等Python中常量的命名規(guī)那么使用變量名為全大寫為常量變量的命名遵循標(biāo)識符的命名規(guī)那么關(guān)鍵字、標(biāo)識符和內(nèi)置函數(shù)1、關(guān)鍵字:在Python中被賦予了特殊含義的英文單詞Python中的關(guān)鍵字的查看使用keyword模塊importkeywordaskeykey.kwlist,,,['False',‘None',‘True','and','as','assert','break','class'

溫馨提示

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

最新文檔

評論

0/150

提交評論