




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
Python程序設(shè)計(jì)
ProgramminginPython主講:龐勝利Python程序設(shè)計(jì)
ProgramminginPyth12第三章常用數(shù)據(jù)結(jié)構(gòu)數(shù)字字符串列表元組字典2第三章常用數(shù)據(jù)結(jié)構(gòu)數(shù)字2Python程序設(shè)計(jì)第三章常用數(shù)據(jù)結(jié)構(gòu)課件3為什么使用內(nèi)置對(duì)象內(nèi)置對(duì)象使程序更容易編寫內(nèi)置對(duì)象可以滿足大部分的應(yīng)用內(nèi)置對(duì)象往往比定制的數(shù)據(jù)結(jié)構(gòu)更有效率速度方面,內(nèi)置對(duì)象優(yōu)化了用C實(shí)現(xiàn)的數(shù)據(jù)結(jié)構(gòu)算法內(nèi)置對(duì)象是語言的標(biāo)準(zhǔn)的一部分為什么使用內(nèi)置對(duì)象內(nèi)置對(duì)象使程序更容易編寫4數(shù)字Python提供了常用的數(shù)字類型:整數(shù)、浮點(diǎn)數(shù)以及與之相關(guān)的語法和操作允許使用八進(jìn)制、十六進(jìn)制常量提供了復(fù)數(shù)類型提供了無窮精度的長(zhǎng)度類型(只要內(nèi)存空間允許,可以增長(zhǎng)成為任意位數(shù)的整數(shù))數(shù)字Python提供了常用的數(shù)字類型:整數(shù)、浮點(diǎn)數(shù)以及與之相5數(shù)字常量數(shù)字常量1234,-24,0一般整數(shù)(c語言長(zhǎng)整型)999999999999999999999999999L98888888888888888l長(zhǎng)整型數(shù)(無限大小)1.23,3.14e-10,4E210,4.0e+210浮點(diǎn)數(shù)(C語言雙精度浮點(diǎn)數(shù))0177,0x9ff八進(jìn)制、十六進(jìn)制3+4j,3.0+4.0j,3J復(fù)數(shù)常量數(shù)字常量數(shù)字常量1234,-24,0一般整數(shù)(c語言長(zhǎng)整型)6內(nèi)置數(shù)學(xué)工具和擴(kuò)展表達(dá)式操作符+、-、*、/、**內(nèi)置數(shù)學(xué)函數(shù)pow、abs公用模塊random、math等專業(yè)擴(kuò)展NumPy矩陣、向量處理等內(nèi)置數(shù)學(xué)工具和擴(kuò)展表達(dá)式操作符7變量和基本的表達(dá)式變量就是用來記錄程序中的信息,它的特點(diǎn):變量像對(duì)象一樣不需要聲明變量在第一次賦值時(shí)創(chuàng)建變量在表達(dá)式中使用將被替換為他們的值變量在表達(dá)式中使用以前必須已經(jīng)賦值變量和基本的表達(dá)式變量就是用來記錄程序中的信息,它的特點(diǎn):8數(shù)字的基本應(yīng)用>>>a=3>>>b=4>>>a+14>>>a-12>>>b*312>>>b/22>>>a%21>>>b**216>>>2.0**b16.0>>>c*2Traceback(mostrecentcalllast):File"<interactiveinput>",line1,in<module>NameError:name'c'isnotdefined>>>b/2+a5>>>b/(2.0+a)0.80000000000000004>>>printb/(2.0+a)0.8數(shù)字的基本應(yīng)用>>>a=3>>>c*2>>>b9數(shù)字顯示的格式>>>num=1/3.0>>>num0.33333333333333331>>>printnum0.333333333333>>>"%e"%num'3.333333e-01'>>>"%2.2f"%num'0.33'>>>數(shù)字顯示的格式>>>num=1/3.010八進(jìn)制、十六進(jìn)制將一個(gè)整數(shù)變?yōu)槠浒诉M(jìn)制、十六進(jìn)制的數(shù)字字符串octhex將一個(gè)數(shù)字的字符串變換成一個(gè)整數(shù),第二個(gè)參數(shù)用于指示變換后的數(shù)字的進(jìn)制用字符串格式表達(dá)式轉(zhuǎn)換成八進(jìn)制、十六進(jìn)制的字符串>>>oct(64)'0100'>>>hex(64)'0x40'>>>int('0100')100>>>int('0100',8)64>>>int('0x40',16)64>>>"%o%x%X"%(64,64,255)'10040FF'八進(jìn)制、十六進(jìn)制將一個(gè)整數(shù)變?yōu)槠浒诉M(jìn)制、十六進(jìn)制的數(shù)字字符串11數(shù)學(xué)內(nèi)置函數(shù)和內(nèi)置模塊math模塊-普通數(shù)學(xué)函數(shù)cmath模塊-處理復(fù)數(shù)的模塊'acos','fsum','acosh','hypot','asin','isinf','asinh','isnan','atan','ldexp','atan2','log','atanh','log10','ceil','log1p','copysign','modf','cos','pi','cosh','pow','degrees','radians','e','sin','exp','sinh','fabs','sqrt','factorial','tan','floor','tanh','fmod','trunc''frexp','acos','log','acosh','log10','asin','phase','asinh','pi','atan','polar','atanh','rect','cos','sin','cosh','sinh','e','sqrt','exp','tan','isinf','tanh''isnan',數(shù)學(xué)內(nèi)置函數(shù)和內(nèi)置模塊math模塊-普通數(shù)學(xué)函數(shù)'acos12random模塊用于產(chǎn)生隨機(jī)數(shù)>>>importrandom>>>random.random()0.33452758558893336>>>random.randint(1,10)5>>>random.choice(['a','b','c'])'c'random模塊用于產(chǎn)生隨機(jī)數(shù)>>>importrand13字符串在第二章已經(jīng)簡(jiǎn)單介紹過字符串簡(jiǎn)單回顧字符串常量:?jiǎn)我?hào)雙引號(hào)三引號(hào)轉(zhuǎn)義自然字符串Unicode字符串字符串在第二章已經(jīng)簡(jiǎn)單介紹過字符串14字符串轉(zhuǎn)義轉(zhuǎn)義字符同C語言的轉(zhuǎn)義字符轉(zhuǎn)義意義\newline行連續(xù)\\反斜線\’單引號(hào)\”雙引號(hào)\a響鈴\b倒退\f換頁\n新行字符串轉(zhuǎn)義轉(zhuǎn)義字符同C語言的轉(zhuǎn)義字符轉(zhuǎn)義意義\newlin15轉(zhuǎn)義意義\r返回\t水平制表符\v垂直制表符\uhhhhUnicode16位的十六進(jìn)制值\Uhhhh…Unicode32位的十六進(jìn)制值\xhh十六進(jìn)制值\0oo八進(jìn)制值\0Null\other不轉(zhuǎn)義(保留)轉(zhuǎn)義意義\r返回\t水平制表符\v垂直制表符\uhhhhUn16字符串基本操作+字符串合并*字符串重復(fù)>>>len('abc')3>>>'abc'+'def''abcdef'>>>'abc''def''abcdef'>>>'hello'*4'hellohellohellohello‘>>>'abc'+9Traceback(mostrecentcalllast):File"<interactiveinput>",line1,in<module>TypeError:cannotconcatenate'str'and'int'objects字符串基本操作+字符串合并>>>len('abc')17字符串基本操作可以用for語句在一個(gè)字符串中進(jìn)行迭代,并使用in表達(dá)式操作符進(jìn)行成員關(guān)系的測(cè)試,這實(shí)際上是一種搜索for循環(huán)指派了一個(gè)變量去獲取一個(gè)序列其中的元素,并對(duì)每一個(gè)元素執(zhí)行一個(gè)或多個(gè)語句,變量c相當(dāng)于在字符串中步進(jìn)的指針>>>s='hello'>>>forcins:...printc,...hello>>>"h"insTrue>>>"b"insFalse字符串基本操作可以用for語句在一個(gè)字符串中進(jìn)行迭代,并使用18字符串索引和分片字符串是字符的有序集合,能夠通過其位置來獲得他們的元素Python中字符串中的字符是通過索引提取的索引從0開始,但不同于C語言的是可以取負(fù)值,表示從末尾提取,最后一個(gè)是-1,前一個(gè)是-2,依次類推,認(rèn)為是從結(jié)束處反向計(jì)數(shù)>>>s='spam'>>>s[0]'s'>>>s[1]'p'>>>s[-1]'m'>>>s[-2]'a'字符串索引和分片字符串是字符的有序集合,能夠通過其位置來獲得19字符串索引和分片分片:從字符串中分離提取了一部分內(nèi)容(子字符串);可以用于提取部分?jǐn)?shù)據(jù),分離出前、后綴等場(chǎng)合。當(dāng)使用一對(duì)以冒號(hào)分隔的偏移索引字符串這樣的序列對(duì)象時(shí),Python就返回一個(gè)新的對(duì)象,其中包含了以這對(duì)偏移所標(biāo)識(shí)的連續(xù)的內(nèi)容。左邊的偏移被取作是下邊界(包含下邊界在內(nèi)),而右邊的偏移被認(rèn)為是上邊界(不包括上邊界在內(nèi))。如果被省略上下邊界的默認(rèn)值分別對(duì)應(yīng)為0和分片對(duì)象的長(zhǎng)度>>>s='spam'>>>s[1:3]'pa'>>>s[1:]'pam'>>>s[:-1]'spa'>>>s[:]'spam'字符串索引和分片分片:從字符串中分離提取了一部分內(nèi)容(子字符20索引和分片的總結(jié)索引(s[i])獲取特定偏移的元素第一個(gè)元素的偏移為0負(fù)偏移索引意味著從最后或右邊反向進(jìn)行計(jì)數(shù)s[0]獲取第一個(gè)元素s[-2]獲取倒數(shù)第二個(gè)元素分片(s[i:j)提取對(duì)應(yīng)的部分作為一個(gè)序列上邊界并不包含在內(nèi)分片的邊界默認(rèn)為0和序列的長(zhǎng)度,如果沒有給出的話s[1:3]獲取從偏移為1開始,直到但不包含偏移為3的元素s[1:]獲取了從偏移為1直到末尾之間的元素s[:3]獲取從偏移為0直到但不包含偏移為3的元素s[:-1]獲取從偏移為0直到但不包含最后一個(gè)元素之間的元素s[:]獲取從偏移為0直到末尾之間的所有元素索引和分片的總結(jié)索引(s[i])獲取特定偏移的元素21分片的擴(kuò)展形式在Python2.3后,分片表達(dá)式增加了一個(gè)可選的第三個(gè)索引,用作步進(jìn)選取完整形式為:X[I:J:K],這表示:索引(獲?。?duì)象X中元素,從偏移為I直到J-1,每隔K元素索引一次K默認(rèn)為1,這就是通常在切片中從左至右提取每個(gè)元素的原因步進(jìn)為負(fù)數(shù)表示將會(huì)從右至左進(jìn)行而不是從左至右分片的擴(kuò)展形式在Python2.3后,分片表達(dá)式增加了一個(gè)可22分片的擴(kuò)展形式X[1:10:2]會(huì)取出X中,偏移量1-9之間,間隔一個(gè)元素的元素,即獲取偏移量為1、3、5、7、9>>>s='abcdefghijklmnop'>>>s[1:10:2]'bdfhj'>>>s[::2]'acegikmo'>>>s='0123456'>>>s[::]'0123456'>>>s[::-1]'6543210'>>>s[::-2]'6420'>>>s[1:5:-1]''>>>s[5:1:-1]'5432'>>>s[9::-1]'6543210'>>>s[6:-1:-1]''>>>s[6:-2:-1]'6'分片的擴(kuò)展形式X[1:10:2]會(huì)取出X中,偏移量1-9之間23字符串轉(zhuǎn)化Python不允許字符串和數(shù)字直接相加。這是有意設(shè)計(jì)的,因?yàn)?既能夠進(jìn)行加法運(yùn)算也能夠進(jìn)行合并運(yùn)算,這樣的語法會(huì)變得模棱兩可,因此,Python將其作為錯(cuò)誤處理,在Python中,如果讓操作變得復(fù)雜或含糊,就會(huì)避免這樣的語法>>>"15"+1Traceback(mostrecentcalllast):File"<interactiveinput>",line1,in<module>TypeError:cannotconcatenate'str'and'int'objects字符串轉(zhuǎn)化Python不允許字符串和數(shù)字直接相加。>>>"24字符串轉(zhuǎn)化如果用戶從文件或用戶界面得到一個(gè)作為字符串的數(shù)字,怎么把這個(gè)字符串變?yōu)閿?shù)字型呢?這就用到類型的轉(zhuǎn)換函數(shù)>>>s='42'>>>type(s)<type'str'>>>>i=int(s)>>>type(i)<type'int'>>>>s1=str(i)>>>type(s1)<type'str'>>>>s='15'>>>s+1Traceback(mostrecentcalllast):File"<interactiveinput>",line1,in<module>TypeError:cannotconcatenate'str'and'int'objects>>>int(s)+116通過明確的手動(dòng)類型轉(zhuǎn)換再進(jìn)行+操作字符串轉(zhuǎn)化如果用戶從文件或用戶界面得到一個(gè)作為字符串的數(shù)字,25常用的類型轉(zhuǎn)換還有字符串到浮點(diǎn)型的轉(zhuǎn)換之后會(huì)深入學(xué)習(xí)內(nèi)置的eval函數(shù),用于運(yùn)行一個(gè)包含了Python表達(dá)式代碼的字符串>>>s='15.0'>>>float(s)15.0>>>eval('12')12>>>eval('12+3')15常用的類型轉(zhuǎn)換還有字符串到浮點(diǎn)型的轉(zhuǎn)換>>>s='1526字符串代碼轉(zhuǎn)換單個(gè)字符可以通過ord函數(shù)轉(zhuǎn)換為對(duì)應(yīng)的ASCII數(shù)值(整數(shù))chr函數(shù)相反,可以將一個(gè)整數(shù)轉(zhuǎn)換為對(duì)應(yīng)的字符>>>ord('a')97>>>chr(97)'a'字符串代碼轉(zhuǎn)換單個(gè)字符可以通過ord函數(shù)轉(zhuǎn)換為對(duì)應(yīng)的ASCI27修改字符串缺省情況下,字符串對(duì)象是“不可變序列”,不可變的意思是不能實(shí)地的修改一個(gè)字符串那如何改變一個(gè)字符串呢?這就要利用合并、分片這樣的工具來建立并賦值給一個(gè)新的字符串;必要的話,可以將結(jié)果賦值給字符串最初的變量名
>>>s='spam'>>>s[0]='x'Traceback(mostrecentcalllast):File"<interactiveinput>",line1,in<module>TypeError:'str'objectdoesnotsupportitemassignment>>>s='spam'>>>s=s+'SPAM'>>>s'spamSPAM'>>>s=s[:4]+'OK!'+s[-1]>>>s'spamOK!M'修改字符串缺省情況下,字符串對(duì)象是“不可變序列”,不可變的意28修改字符串每修改一次字符串就生成一個(gè)新的字符串對(duì)象,這看起來好像會(huì)造成效率下降,其實(shí),在Python內(nèi)部會(huì)自動(dòng)對(duì)不再使用的字符串進(jìn)行垃圾回收,所以,新的對(duì)象重用了前面已有字符串的空間Python的效率比我們想象的要好修改字符串每修改一次字符串就生成一個(gè)新的字符串對(duì)象,這看起來29字符串格式化Python可以用%操作符編寫格式化的字符串格式化字符串:1、在%操作符左側(cè)放置一個(gè)需要進(jìn)行格式化的字符串,這個(gè)字符串帶有一個(gè)或多個(gè)嵌入的轉(zhuǎn)換目標(biāo),都以%開頭,如%d、%f等2、在%操作符右側(cè)放置一個(gè)對(duì)象(或多個(gè),在括號(hào)內(nèi)),這些對(duì)象會(huì)被插入到左側(cè)格式化字符串的轉(zhuǎn)換目標(biāo)的位置上>>>bookcount=10>>>"thereare%dbooks"%bookcount'thereare10books'字符串格式化>>>bookcount=1030字符串格式化>>>"%d%s%dyou"%(1,'spam',4)'1spam4you‘>>>"%s--%s--%s"%(42,3.1415926,[1,2,3])'42--3.1415926--[1,2,3]'左側(cè)的目標(biāo)位置都要求是%s(字符串),這就表示要將右邊的對(duì)象都轉(zhuǎn)換為字符串另外要注意的是,格式化總會(huì)返回新的字符串作為結(jié)果,而不是對(duì)左側(cè)的字符串進(jìn)行修改,由于字符串是不可變的;因此,如果需要的話,可以分配一個(gè)變量名來保持結(jié)果字符串格式化>>>"%d%s%dyou"%(1,'31字符串格式化ConversionMeaning'd'Signedintegerdecimal.'i'Signedintegerdecimal.'o'Signedoctalvalue.'u'Obsoletetype–itisidenticalto'd'.'x'Signedhexadecimal(lowercase).'X'Signedhexadecimal(uppercase).'e'Floatingpointexponentialformat(lowercase).'E'Floatingpointexponentialformat(uppercase).'f'Floatingpointdecimalformat.'F'Floatingpointdecimalformat.'g'Floatingpointformat.Useslowercaseexponentialformatifexponentislessthan-4ornotlessthanprecision,decimalformatotherwise.'G'Floatingpointformat.Usesuppercaseexponentialformatifexponentislessthan-4ornotlessthanprecision,decimalformatotherwise.'c'Singlecharacter(acceptsintegerorsinglecharacterstring).'r'String(convertsanyPythonobjectusingrepr()).'s'String(convertsanyPythonobjectusingstr()).'%'Noargumentisconverted,resultsina'%'characterintheresult.字符串格式化ConversionMeaning'd'Sign32字符串的方法‘capitalize’,將首字母大寫‘lower’,將字符串中所有字符小寫‘center’,填充為指定長(zhǎng)度的字符串,并將原字符串放中間‘lstrip’,去掉字符串左邊指定的字符串,去掉參數(shù)所有字符的組合‘count’,返回參數(shù)在字符串中出現(xiàn)的次數(shù)‘partition’,將字符串從指定字符串隔開,結(jié)果為3元組‘decode’,按指定格式編碼‘replace’,替換指定的子字符串‘encode’,按指定格式解碼‘rfind’,查找最右邊的指定的子字符串‘endswith’,是否以參數(shù)指定的字符串結(jié)尾‘rindex’,和rfind類似,只是如果找不到觸發(fā)異常'expandtabs',‘rjust’,右對(duì)齊,如果不夠長(zhǎng)填充指定的字符‘find’,在字符串中查找指定的子字符串,并返回索引‘rpartition’,類似于partition,只是從右邊開始查找指定字符串‘format’,格式化"Thesumof1+2is{0}".format(1+2)‘rsplit’,用指定字符分割字符串,并返回列表,如果超過指定數(shù)目,只取右邊的結(jié)果‘index’,和find相同,但如果找不到的話觸發(fā)異常‘rstrip’,類似lstrip,只是去掉右邊指定字串‘isalnum’,字符串是否全是字母和數(shù)字‘split’,將字符串用指定字符分割,返回列表'isalpha',字符串是否全是字母‘splitlines’,將一個(gè)字符串分割為多個(gè)字符串的列表,此字符串必須含有\(zhòng)n‘isdigit’,字符串是否全是數(shù)字(不包括小數(shù)點(diǎn))‘startswith’,字符串是否以指定前綴開始‘islower’,字符串是否全是小寫‘strip’,去掉字符串前后的指定字符串‘isspace’,字符串是否全是空格‘swapcase’,將字符串大小寫互換‘istitle’,字符串單詞是否全部首個(gè)字符大寫‘title’,將每個(gè)單詞首字母大寫‘isupper’,字符串是否全部是大寫‘translate’,字符的轉(zhuǎn)換,必須要有轉(zhuǎn)換的碼表‘join’,將列表、元組等元素連接起來‘upper’,將字符串大寫‘ljust’,靠左對(duì)齊,如果不夠長(zhǎng)填充指定的字符‘zfill’,安指定寬度在字符串左邊填充‘0’字符串的方法‘capitalize’,將首字母大寫‘l33字符串總結(jié)1、如何將字符轉(zhuǎn)為ASCII碼?如何反向轉(zhuǎn)換,將數(shù)字轉(zhuǎn)換為字符?2、在Python中,如何修改字符串?3、已知字符串s的值為“s,pa,m”,如何將其用“,”分割成列表?字符串總結(jié)1、如何將字符轉(zhuǎn)為ASCII碼?如何反向轉(zhuǎn)換,將數(shù)34列表(list)列表是Python中最具靈活性的有序集合對(duì)象類型。和字符串不同的是,列表可以包含任何種類的對(duì)象:數(shù)字、字符串、自定義對(duì)象甚至其他列表列表是可變對(duì)象,支持在原處修改,可以通過指定的偏移值和分片、列表方法調(diào)用、刪除語句等方法實(shí)現(xiàn)列表(list)列表是Python中最具靈活性的有序集合對(duì)象35列表的主要性質(zhì)任意對(duì)象的有序集合從功能是看,列表就是收集其他對(duì)象的地方,可以他們看成數(shù)組;同時(shí),列表所包含的每一項(xiàng)都保持了從左到右的位置順序(也就是說,它們是序列)通過偏移讀取和字符串一樣,可以通過列表對(duì)象的偏移對(duì)其進(jìn)行索引,從而讀取對(duì)象的一部分內(nèi)容。當(dāng)然也可以執(zhí)行諸如分片和合并之類的操作。列表的主要性質(zhì)任意對(duì)象的有序集合36列表的主要性質(zhì)可變長(zhǎng)度、異構(gòu)以及任意嵌套和字符串不同,列表可以根據(jù)需要增長(zhǎng)或縮短(長(zhǎng)度可變),并且可以包含任何類型的對(duì)象,并支持任意的嵌套。可變序列列表支持在原處的修改,也可以響應(yīng)所有針對(duì)字符串序列的操作,如索引、分片以及合并。實(shí)際上,序列操作在列表與字符串中工作方式相同。唯一區(qū)別是:當(dāng)合并或分片應(yīng)用于列表時(shí),返回新的列表而不是新的字符串。當(dāng)然,支持某些字符串不支持的操作。列表的主要性質(zhì)可變長(zhǎng)度、異構(gòu)以及任意嵌套37常用列表常量和操作操作解釋L1=[]一個(gè)空的列表L2=[0,1,2,3]四元素列表L3=[‘a(chǎn)bc’,10,[‘def’,‘ghi’]嵌套列表L2[i]索引L3[i][j]索引的索引L2[i:j]分片len(L2)求長(zhǎng)度L1+L2合并L2*3重復(fù)常用列表常量和操作操作解釋L1=[]一個(gè)空的列表L2=[38列表的方法append(x)把一個(gè)元素添加到列表的結(jié)尾,相當(dāng)于a[len(a):]=[x]extend(L)通過添加指定列表的所有元素來擴(kuò)充列表,相當(dāng)于a[len(a):]=Linsert(i,x)在指定位置插入一個(gè)元素。第一個(gè)參數(shù)是準(zhǔn)備插入到其前面的那個(gè)元素的索引,例如a.insert(0,x)會(huì)插入到整個(gè)鏈表之前,而a.insert(len(a),x)相當(dāng)于a.append(x)。列表的方法append(x)39列表的方法remove(x)刪除鏈表中值為x的第一個(gè)元素。如果沒有這樣的元素,就會(huì)返回一個(gè)錯(cuò)誤。pop([i])從鏈表的指定位置刪除元素,并將其返回。如果沒有指定索引,a.pop()返回最后一個(gè)元素。元素隨即從鏈表中被刪除。(方法中i兩邊的方括號(hào)表示這個(gè)參數(shù)是可選的,而不是要求輸入一對(duì)方括號(hào),會(huì)經(jīng)常在Python庫參考手冊(cè)中遇到這樣的標(biāo)記。)列表的方法remove(x)40列表的方法index(x)返回鏈表中第一個(gè)值為x的元素的索引。如果沒有匹配的元素就會(huì)返回一個(gè)錯(cuò)誤。count(x)返回x在鏈表中出現(xiàn)的次數(shù)。sort()對(duì)鏈表中的元素進(jìn)行適當(dāng)?shù)呐判?。reverse()倒排鏈表中的元素。列表的方法index(x)41列表的方法>>>a=[66.6,333,333,1,1234.5]>>>printa.count(333),a.count(66.6),a.count('x')210>>>a.insert(2,-1)>>>a.append(333)>>>a[66.599999999999994,333,-1,333,1,1234.5,333]>>>a.index(333)1>>>a.remove(333)>>>a[66.599999999999994,-1,333,1,1234.5,333]>>>a.reverse()>>>a[333,1234.5,1,333,-1,66.599999999999994]>>>a.sort()>>>a[-1,1,66.599999999999994,333,333,1234.5]列表的方法>>>a=[66.6,333,333,42把列表當(dāng)作堆棧使用鏈表方法使得鏈表可以很方便的做為一個(gè)堆棧來使用,堆棧作為特定的數(shù)據(jù)結(jié)構(gòu),最先進(jìn)入的元素最后一個(gè)被釋放(后進(jìn)先出)。用append()方法可以把一個(gè)元素添加到堆棧頂。用不指定索引的pop()方法可以把一個(gè)元素從堆棧頂釋放出來。舉例:>>>st=[3,4,5]>>>st.append(6)>>>st.append(7)>>>st[3,4,5,6,7]>>>st.pop()7>>>st[3,4,5,6]>>>st.pop()6>>>st.pop()5>>>st[3,4]把列表當(dāng)作堆棧使用鏈表方法使得鏈表可以很方便的做為一個(gè)堆棧來43把列表當(dāng)作隊(duì)列使用也可以把鏈表當(dāng)做隊(duì)列使用,隊(duì)列作為特定的數(shù)據(jù)結(jié)構(gòu),最先進(jìn)入的元素最先釋放(先進(jìn)先出)。使用append()方法可以把元素添加到隊(duì)列最后,以0為參數(shù)調(diào)用pop()方法可以把最先進(jìn)入的元素釋放出來。>>>queue=['a','b','c']>>>queue.append('d')>>>queue.append('e')>>>queue['a','b','c','d','e']>>>queue.pop(0)'a'>>>queue['b','c','d','e']>>>queue.pop(0)'b'>>>queue['c','d','e']把列表當(dāng)作隊(duì)列使用也可以把鏈表當(dāng)做隊(duì)列使用,隊(duì)列作為特定的數(shù)44刪除列表元素可以用del進(jìn)行可以刪除某個(gè)索引的元素或切片元素>>>lst=[1,2,3]>>>lst[1,2,3]>>>dellst[1]>>>lst[1,3]>>>lst.append(4)>>>lst[1,3,4]>>>dellst[0:]>>>lst[]刪除列表元素可以用del進(jìn)行>>>lst=[1,2,45元組我們知道鏈表和字符串有很多通用的屬性,例如索引和切片操作。它們是序列類型中的兩種。因?yàn)镻ython是一個(gè)在不斷進(jìn)化的語言,也會(huì)加入其它的序列類型,另一種標(biāo)準(zhǔn)序列類型:元組。元組我們知道鏈表和字符串有很多通用的屬性,例如索引和切片操作46元組簡(jiǎn)介一個(gè)元組由數(shù)個(gè)逗號(hào)分隔的值組成,例如:>>>t=12345,54321,'hello'>>>t[0]12345>>>t(12345,54321,'hello')>>>u=t,(1,2,3)>>>u((12345,54321,'hello'),(1,2,3))元組簡(jiǎn)介一個(gè)元組由數(shù)個(gè)逗號(hào)分隔的值組成,例如:>>>t=47元組簡(jiǎn)介如上所示,元組在輸出時(shí)總是有括號(hào)的,以便于正確表達(dá)嵌套結(jié)構(gòu)。在輸入時(shí),有或沒有括號(hào)都可以,不過經(jīng)常括號(hào)都是必須的(如果元組是一個(gè)更大的表達(dá)式的一部分)。元組簡(jiǎn)介如上所示,元組在輸出時(shí)總是有括號(hào)的,以便于正確表達(dá)嵌48元組元組有很多用途。例如(x,y)坐標(biāo)點(diǎn),數(shù)據(jù)庫中的員工記錄等等。元組就像字符串,不可改變:不能給元組的一個(gè)獨(dú)立的元素賦值(盡管可以通過聯(lián)接和切片來模仿)可以通過包含可變對(duì)象來創(chuàng)建元組,例如鏈表。>>>lst=[1,2,3]>>>t=tuple(lst)>>>t(1,2,3)元組元組有很多用途。例如(x,y)坐標(biāo)點(diǎn),數(shù)據(jù)庫中的員工記49元組一個(gè)特殊的問題是構(gòu)造包含零個(gè)或一個(gè)元素的元組:為了適應(yīng)這種情況,語法上有一些額外的改變。一對(duì)空的括號(hào)可以創(chuàng)建空元組;要?jiǎng)?chuàng)建一個(gè)單元素元組可以在值后面跟一個(gè)逗號(hào)(在括號(hào)中放入一個(gè)單值是不夠的)。丑陋,但是有效。例如:>>>emp=()>>>emp()>>>single='a',#<--notetrailingcomma>>>len(emp)0>>>len(single)1>>>single('a',)元組一個(gè)特殊的問題是構(gòu)造包含零個(gè)或一個(gè)元素的元組:為了適應(yīng)這50元組封裝和解封語句t=12345,54321,’hello!’是元組封裝(sequencepacking)的一個(gè)例子:值12345,54321和’hello!’被封裝進(jìn)元組。其逆操作可能是這樣:這個(gè)調(diào)用被稱為序列拆封非常合適。序列拆封要求左側(cè)的變量數(shù)目與序列的元素個(gè)數(shù)相同。>>>t=(1,2,3)>>>x,y,z=t>>>printx,y,z123元組封裝和解封語句t=12345,54321,’he51元組封裝和解封拆封和封裝一點(diǎn)不對(duì)稱:封裝多重參數(shù)通常會(huì)創(chuàng)建一個(gè)元組,而拆封操作可以作用于任何序列。>>>t=[1,2,3]>>>x,y,z=t>>>printx,y,z123>>>s="123">>>x,y,z=s>>>printx,y,z123元組封裝和解封拆封和封裝一點(diǎn)不對(duì)稱:封裝多重參數(shù)通常會(huì)創(chuàng)建一52字典另一個(gè)非常有用的Python內(nèi)建數(shù)據(jù)類型是字典。字典在某些語言中可能稱為“聯(lián)合內(nèi)存”(“associativememories”)或“聯(lián)合數(shù)組”(“associativearrays”)。字典類似于通過聯(lián)系人名字查找地址和聯(lián)系人詳細(xì)情況的地址簿,即:我們把鍵(名字)和值(詳細(xì)情況)聯(lián)系在一起。注意,鍵必須是唯一的,就像如果有兩個(gè)人恰巧同名的話,將無法找到正確的信息。字典另一個(gè)非常有用的Python內(nèi)建數(shù)據(jù)類型是字典。字典在某53字典序列是以連續(xù)的整數(shù)為索引,與此不同的是,字典以關(guān)鍵字為索引關(guān)鍵字可以是任意不可變類型,通常用字符串或數(shù)值。如果元組中只包含字符串和數(shù)字,它可以做為關(guān)鍵字,如果它直接或間接的包含了可變對(duì)象,就不能當(dāng)做關(guān)鍵字不能用列表做關(guān)鍵字,因?yàn)殒湵砜梢杂盟鼈兊腶ppend()和extend()方法,或者用切片、或者通過檢索變量來即時(shí)改變基本說來,應(yīng)該只使用簡(jiǎn)單的對(duì)象作為鍵字典序列是以連續(xù)的整數(shù)為索引,與此不同的是,字典以關(guān)鍵字為索54字典理解字典的最佳方式是把
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 民間投資合作協(xié)議合同范文
- 企業(yè)間房產(chǎn)轉(zhuǎn)讓合同細(xì)則
- 軍人離婚正式合同書模板
- 9 古詩三首 雪梅教學(xué)設(shè)計(jì)-2024-2025學(xué)年四年級(jí)上冊(cè)語文統(tǒng)編版
- 2 日晷 教學(xué)設(shè)計(jì)-2023-2024學(xué)年科學(xué)四年級(jí)下冊(cè)大象版
- 小學(xué)2024年教育教學(xué)專項(xiàng)發(fā)展規(guī)劃執(zhí)行、完成情況
- 個(gè)人土地交易合同及相關(guān)條款
- 10《我們所了解的環(huán)境污染》(教學(xué)設(shè)計(jì))-統(tǒng)編版道德與法治四年級(jí)上冊(cè)
- 2024-2025學(xué)年人教版(2024)七年級(jí)英語上冊(cè)寒假教學(xué)設(shè)計(jì)day7
- 員工服裝合同范本
- 福特福睿斯說明書
- 萬千教育學(xué)前幼兒園課程故事:支架教師的專業(yè)成長(zhǎng)
- 居間協(xié)議書-五金工具銷售服務(wù)
- 酒店賓客意見表
- 一年級(jí)語文《端午粽》說課課件
- NB/T 11261-2023煤礦凍結(jié)孔施工及質(zhì)量驗(yàn)收規(guī)范
- 《鑄造用增碳劑》
- 嬰幼兒傷害預(yù)防與處理配套教材電子課件(完整版)
- 萃取技術(shù) 多級(jí)逆流萃取
- 部編版小學(xué)五年級(jí)語文教材培訓(xùn)課件【部編】
- 盆景造型經(jīng)驗(yàn)
評(píng)論
0/150
提交評(píng)論