![Python語言程序設(shè)計課件1第3章 Python語言的基本數(shù)據(jù)類型_第1頁](http://file4.renrendoc.com/view/008780c53d78eb1f6310a45c389ecf27/008780c53d78eb1f6310a45c389ecf271.gif)
![Python語言程序設(shè)計課件1第3章 Python語言的基本數(shù)據(jù)類型_第2頁](http://file4.renrendoc.com/view/008780c53d78eb1f6310a45c389ecf27/008780c53d78eb1f6310a45c389ecf272.gif)
![Python語言程序設(shè)計課件1第3章 Python語言的基本數(shù)據(jù)類型_第3頁](http://file4.renrendoc.com/view/008780c53d78eb1f6310a45c389ecf27/008780c53d78eb1f6310a45c389ecf273.gif)
![Python語言程序設(shè)計課件1第3章 Python語言的基本數(shù)據(jù)類型_第4頁](http://file4.renrendoc.com/view/008780c53d78eb1f6310a45c389ecf27/008780c53d78eb1f6310a45c389ecf274.gif)
![Python語言程序設(shè)計課件1第3章 Python語言的基本數(shù)據(jù)類型_第5頁](http://file4.renrendoc.com/view/008780c53d78eb1f6310a45c389ecf27/008780c53d78eb1f6310a45c389ecf275.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
學(xué)習(xí)目標(biāo)了解掌握熟悉Python語言中數(shù)據(jù)與其他語言的共性與區(qū)別13深淺拷貝的含義與實現(xiàn)方法2各種數(shù)據(jù)類型的定義與使用方法本章主講內(nèi)容主講內(nèi)容Speechcontent3.2字符串3.3列表3.1數(shù)值數(shù)據(jù)3.4元組3.5字典3.9小結(jié)3.6集合3.7深淺拷貝3.8綜合應(yīng)用案例數(shù)據(jù)含義與講解內(nèi)容數(shù)據(jù)即變量的值,變量是用來反映/保持狀態(tài)以及狀態(tài)變化的。在程序設(shè)計語言中,針對不同的狀態(tài)就用不同類型的數(shù)據(jù)去標(biāo)識。本章將介紹python的數(shù)字、字符串、布爾、列表、元組、字典與集合等基本類型的數(shù)據(jù)。Python最大的特色就是引入了列表、元組、字典與集合等特色的數(shù)據(jù)類型,這些類型數(shù)據(jù)的使用能改變讀者的編程思維。主講內(nèi)容Speechcontent3.1.2Python3中與數(shù)值相關(guān)函數(shù)3.1數(shù)值數(shù)據(jù)1.1Python簡介3.1.1Python3支持的數(shù)值數(shù)據(jù)類型3.1.3Python3中數(shù)值函數(shù)的應(yīng)用數(shù)值數(shù)據(jù)數(shù)字?jǐn)?shù)據(jù)類型用于存儲數(shù)值。在Python中,數(shù)值數(shù)據(jù)屬于不可變數(shù)據(jù)類型。所謂不可變類型就是當(dāng)為變量分配數(shù)值數(shù)據(jù)時,Python將創(chuàng)建數(shù)值對象,且把變量指向創(chuàng)建的數(shù)值對象,當(dāng)更改指向數(shù)值對象變量的值時,Python就重新創(chuàng)建新值的數(shù)值對象,把變量重新指向新的數(shù)值對象,而數(shù)值對象本身是不能被修改的。數(shù)值數(shù)據(jù)不可變數(shù)據(jù)類型的含義。X=1X=x+1棧內(nèi)存堆內(nèi)存X12Python3支持的數(shù)值數(shù)據(jù)類型Python3支持的數(shù)值數(shù)據(jù)類型有帶符號整數(shù),浮點(diǎn)實數(shù)與復(fù)數(shù)三種:
1.Int(有符號整數(shù)):該類型通常被稱為整數(shù),是沒有小數(shù)點(diǎn)的正或負(fù)數(shù)。
注意:
Python3中的整數(shù)是不限大小的。
2.
Float(浮點(diǎn)實數(shù)值):也稱為浮點(diǎn)數(shù),它們表示實數(shù)。例如,2.5,3.14就是一個浮點(diǎn)數(shù),浮點(diǎn)數(shù)也可以用科學(xué)符號表示,如+2.5E3或+2.5e3,表示2.5乘10的三次方。
3.complex(復(fù)數(shù)):復(fù)數(shù)是以a+bj的形式,其中a和b是浮點(diǎn),J(或j)表示-1的平方根(虛數(shù))。數(shù)據(jù)的實部是a,虛部是b。
Python3支持的數(shù)值數(shù)據(jù)類型
在python中可以用十進(jìn)制、十六進(jìn)制或八進(jìn)制形式表示整數(shù),如果用十六進(jìn)制表示整數(shù),就在十六進(jìn)制數(shù)前加上“0x”或“0X”,如果用八進(jìn)制表示整數(shù),就在八進(jìn)制數(shù)前加上“0o”或“0O”。Python3中與數(shù)值相關(guān)函數(shù)數(shù)值函數(shù)編號函數(shù)描述1abs(x)x的絕對值。2ceil(x)x的上限,不小于x的最小整數(shù)。4exp(x)x的指數(shù),返回e的x次冪。5floor(x)不大于x的最大整數(shù)。6log(x)x的自然對數(shù)(x>0)。7log10(x)以基數(shù)為10的x的對數(shù)(x>0)。8max(x1,x2,…)給定參數(shù)中的最大值,最接近正無窮大值。9min(x1,2,…)給定參數(shù)中的最小值,最接近負(fù)無窮小值。10modf(x)將x的分?jǐn)?shù)和整數(shù)部分切成兩項放入元組中,兩個部分與x具有相同的符號。整數(shù)部分作為浮點(diǎn)數(shù)返回。11pow(x,y)x的y次冪。12round(x[,n])x從小數(shù)點(diǎn)舍入到n位數(shù)。round(0.5)結(jié)果為
1.0,
round(-0.5)
結(jié)果為
-1.0。13sqrt(x)x的平方根(x>0)。Python3中與數(shù)值相關(guān)函數(shù)函數(shù)描述示例int(x)將x轉(zhuǎn)換為純整數(shù)。int(3.14)返回結(jié)果是整數(shù)3。float(x)將x轉(zhuǎn)換為浮點(diǎn)數(shù)。Float(3)返回結(jié)果是整數(shù)3.0。數(shù)值類型轉(zhuǎn)換函數(shù)Python3中與數(shù)值相關(guān)函數(shù)三角函數(shù)編號函數(shù)描述1acos(x)返回x的弧余弦值,以弧度表示。2asin(x)返回x的弧線正弦,以弧度表示。3atan(x)返回x的反正切,以弧度表示。4atan2(y,x)返回atan(y/x),以弧度表示。5cos(x)返回x弧度的余弦。6hypot(x,y)返回歐幾里得規(guī)范,sqrt(x*x+y*y)7sin(x)返回x弧度的正弦。8tan(x)返回x弧度的正切值。9degrees(x)將角度x從弧度轉(zhuǎn)換為度。10radians(x)將角度x從角度轉(zhuǎn)換為弧度。Python3中與數(shù)值相關(guān)函數(shù)隨機(jī)函數(shù)編號函數(shù)描述1choice(seq)來自列表,元組或字符串的隨機(jī)項目。2randrange([start,]stop[,step])從范圍(start,stop,step)中隨機(jī)選擇的元素。3random()返回隨機(jī)浮點(diǎn)數(shù)r(0<=r<1),4seed([x])用來確定生成的隨機(jī)數(shù),如果使用相同的X值,則生成的隨機(jī)數(shù)相同。函數(shù)返回值為None。5shuffle(lst)將列表的元素隨機(jī)化,函數(shù)返回值為None。6uniform(x,y)返回隨機(jī)浮點(diǎn)數(shù)
r
(x<=r<y)。注意:在python中要使用隨機(jī)函數(shù)必須導(dǎo)入random包。主講內(nèi)容Speechcontent3.2.2轉(zhuǎn)義字符3.2字符串1.1Python簡介3.2.1訪問字符串中的字符與更新字符串3.2.3字符串特殊運(yùn)算符3.2.5字符串內(nèi)置方法3.2.4字符串格式化運(yùn)算字符串
字符串是Python中最受歡迎、最常用的一種數(shù)據(jù)類型。在python中,加了引號(單引號或雙引號)的字符就是字符串類型,用于標(biāo)識描述性的內(nèi)容,如姓名,性別,國籍,種族等等。注意:字符串也是不可變數(shù)據(jù)類型。
字符串的定義方法如下:str1='HelloWorld!’str2=str('HelloWorld!')
#用構(gòu)造方法創(chuàng)建字符串類型數(shù)據(jù)。
字符串?dāng)?shù)據(jù)類型與數(shù)值數(shù)據(jù)一樣是不可變數(shù)據(jù)類型,當(dāng)更改字符串值時會導(dǎo)致重新創(chuàng)建與分配對象。
注意:python并沒有字符類型,字符會被視為長度為1的字符串。訪問字符串中的字符與更新字符串str1=“helloworld”
print(“str1[0:4]:”,str1[0:4])#切片加上索引,不包括索引為4的字符
print("lastcharacteris:",str1[10])#使用索引#輸出如下:str1[0:4]:helllastcharacteris:d
在python3中要訪問子串,需使用方括號的切片加上索引或直接使用索引來獲取子字符串。例如:訪問字符串中的字符與更新字符串str1=“helloworld”print(id(str1))str1=str1[:6]+'Python’print(id(str1))#此處的id的值與前面不一樣print("UpdatedString:",str1)#生成"hello“與'Python'連接生成一個新字符串
#輸出如下:UpdatedString:helloPython更新字符串可以通過將變量分配給另一個字符串來更新現(xiàn)有的字符串。新值可以是與其原值相關(guān)或完全不同的字符串。例如:轉(zhuǎn)義字符
在Python中,可以用反斜杠表示轉(zhuǎn)義或不可打印字符的列表。單引號以及雙引號字符串的轉(zhuǎn)義字符被解析。反斜線符號十六進(jìn)制字符描述/說明\a0x07鈴聲或警報。\b0x08退格。\n0x0a新一行。\nnn
八進(jìn)制符號,其中n在0~7范圍內(nèi)。\r0x0d回車返回。\s0x20空格。\t0x09制表符。\v0x0b垂直制表符。\x
字符x。\xnn
十六進(jìn)制符號,其中n在0~9,a~f或A~F范圍內(nèi)。字符串特殊運(yùn)算符運(yùn)算符說明示例+連接,將運(yùn)算符的兩邊的值連接。a+b:HelloPython。*重復(fù),創(chuàng)建新字符串,連接相同字符串的指定副本個數(shù)。a*2
:
HelloHello。[]字符切片
-給出指定索引的字符,產(chǎn)生原字符串的子串。注意,字符串的索引從0開始。a[1]:e。[:]范圍切片
–產(chǎn)生指定范圍內(nèi)的子字符串。a[1:4]
:
ell。in成員關(guān)系
-如果給定字符串中存在指定的字符串,則返回true。'll'ina:true。notin成員關(guān)系
-如果給定字符串中不存在指定的字符串,則返回true。'll'notina:false。r/R原始字符串
-抑制轉(zhuǎn)義字符的實際含義。原始字符串的語法與正常字符串的格式完全相同,除了原始字符串運(yùn)算符在引號之前加上字母“r”?!皉”可以是小寫(r)或大寫(R),并且必須緊靠在第一個引號之前。print(r'\n')
將打印
\n
,或者
print(R'\n')
將打印
\n,要注意的是如果不加r或R作為前綴,打印的結(jié)果就是一個換行。字符串格式化運(yùn)算符
Python中內(nèi)置的%操作符可用于格式化字符串操作,控制字符串的輸出格式。
當(dāng)格式化字符串時需要一個字符串作為模板,模板中有格式符,這些格式符為真實輸出時預(yù)留位置。Python可用一個tuple或字典將多個值傳遞給字符串模板,每個值對應(yīng)一個格式符,也可以直接用一個變量名來傳替一個參數(shù)。字符串格式化運(yùn)算符
使用元組傳替參數(shù)的格式:格式化字符串%(參數(shù)值1,參數(shù)值2,...)
說明:格式化字符串中“%”為占位符,后跟類型碼,占位符的位置將用參數(shù)值替換。print("I'm%s.I'm%dyearold"%('Lili',19))
#該語句的輸出為I'mLili.I'm19yearold
在格式化字符串操作中也可以用字典來傳參數(shù)。print("I'm%(name)s.I'm%(age)dyearold"%{'name':'Lili','age':19})#該語句的輸出為I'mLili.I'm19yearold字符串格式化運(yùn)算符
使用元組傳替參數(shù)的格式:格式化字符串%(參數(shù)值1,參數(shù)值2,...)
說明:格式化字符串中“%”為占位符,后跟類型碼,占位符的位置將用參數(shù)值替換。print("I'm%s.I'm%dyearold"%('Lili',19))
#該語句的輸出為I'mLili.I'm19yearold
在格式化字符串操作中也可以用字典來傳參數(shù)。print("I'm%(name)s.I'm%(age)dyearold"%{'name':'Lili','age':19})#該語句的輸出為I'mLili.I'm19yearold字符串格式化運(yùn)算符編號格式化符號轉(zhuǎn)換1%s在格式化之前通過str()函數(shù)轉(zhuǎn)換字符串。2%i帶符號的十進(jìn)制整數(shù)。3%d帶符號的十進(jìn)制整數(shù)。4%u無符號十進(jìn)制整數(shù)。5%o八進(jìn)制整數(shù)。6%x,%X十六進(jìn)制整數(shù)(“x”或“X”)。7%e,%E指數(shù)符號(’e‘或’E‘)。8%f浮點(diǎn)實數(shù)。9%g%f和%e。字符串的內(nèi)置方法Python提供了很多的內(nèi)置函數(shù)用于處理字符串。1.center函數(shù)
格式:center(width,fillchar)
作用:center函數(shù)返回一個指定的寬度width居中的字符串,
fillchar為填充的字符,默認(rèn)為空格。
舉例:字符串為str,填充字符為“&”------------------------------------------------------------------------->>>str="thisisstringexample....wow!!!";>>>print("str.center(40,'&'):",str.center(40,'&'))str.center(40,'&'):&&&&thisisstringexample....wow!!!&&&&-------------------------------------------------------------------------------字符串的內(nèi)置方法2.count函數(shù)格式:count(str,beg=0,end=len(string))作用:統(tǒng)計字符串里某個字符出現(xiàn)的次數(shù)??蛇x參數(shù)為在字符串搜索的開始與結(jié)束位置。示例:-----------------------------------------------------------------------------str="thisisstringexample....wow!!!";
sub="i";
print("str.count(sub,4,40):",str.count(sub,4,40));
#輸出如下:str.count(sub,4,40):2--------------------------------------------------------------------------字符串的內(nèi)置方法3.endwith函數(shù)格式:endswith(suffix,beg=0,end=len(string))作用:確定字符串或字符串的子字符串(如果啟動索引結(jié)束和結(jié)束索引結(jié)束)都以后綴結(jié)尾;如果是則返回true,否則返回false。----------------------------------------------------------------------------Str="Helloworld!!"
suffix='!!’
print(Str.endswith(suffix))#輸出為true
print(len(Str))#輸出為13
print(Str.endswith(suffix,1,12))#輸出為false
print(Str.endswith(suffix,1,13))#輸出為true----------------------------------------------------------------------------字符串的內(nèi)置方法4.join方法格式:join(seq)作用:將序列(seq)中的元素以指定的字符連接生成一個新的字符串。-----------------------------------------------------------------------------str="-";seq=("a","b","c");#字符串序列printstr.join(seq);#輸出結(jié)果a-b-c-----------------------------------------------------------------------------字符串的內(nèi)置方法5.split方法格式:split(str,num)作用:用指定分隔符(str)對字符串進(jìn)行切片生成列表,如果參數(shù)num有指定值,則分隔num+1個子字符串。------------------------------------------------------------------------------str="Line1-abcdef\nLine2-abc\nLine4-abcd";
print(str.split());#以空格為分隔符,包含\n
print(str.split('',1));#以空格為分隔符,分隔成兩個#輸出結(jié)果['Line1-abcdef','Line2-abc','Line4-abcd']['Line1-abcdef','\nLine2-abc\nLine4-abcd']-----------------------------------------------------------------------------字符串的內(nèi)置方法6.ljust方法格式:ljust(width[,fillchar])作用:返回一個原字符串左對齊,并使用指定的填充字符填充至指定長度形成新的字符串。如果指定的長度小于原字符串的長度則返回原字符串。-------------------------------------------------------------------------------str="HelloPYTHON!!";
print(str.ljust(20,'*'));#輸出為HelloPYTHON!!******-------------------------------------------------------------------------------字符串的內(nèi)置方法7.translate方法格式:translate(table,deletechars=)作用:根據(jù)參數(shù)table給出的表(包含256個字符)轉(zhuǎn)換字符串的字符,要過濾掉的字符放到
deletechars
參數(shù)中。-------------------------------------------------------------------------------intab="aeiou"outtab="12345"trantab=str.maketrans(intab,outtab)#制作翻譯表str="thisisstringexample....wow!!!"print(str.translate(trantab))#輸出結(jié)果th3s3sstr3ng2x1mpl2....w4w!!!-----------------------------------------------------------------------------字符串的內(nèi)置方法其他內(nèi)置方法請見書中相關(guān)內(nèi)容主講內(nèi)容Speechcontent3.3.2修改與刪除列表元素3.3列表1.1Python簡介3.3.1列表的創(chuàng)建與列表值的訪問3.3.3列表腳本操作符與列表截取3.3.5列表生成式3.3.4列表函數(shù)與方法列表
列表(list)是有序(有先后順序之分)的可變(可修改)的元素集合,是Python中最基本的數(shù)據(jù)結(jié)構(gòu),也是最常用的Python數(shù)據(jù)類型。在列表中的數(shù)據(jù)項不需要具有相同的類型。列表中的每個元素都有索引值,第一個索引是0,第二個索引是1,依此類推,每個元素可以根據(jù)索引值來獲得。
列表的創(chuàng)建與列表值的訪問
如果要把列表(或元組)中的元素賦給變量,如list4=[1,2,3,4],可以通過如下命令把列表的值賦給a,b,c,d變量。>>>list4=[1,2,3,4]>>>a,b,c,d=list4>>>print(a,b,c,d)1234注意:該方法要求接收的變量個數(shù)要與列表元素一致,否則系統(tǒng)會報錯。修改或刪除列表元素
由于列表是有序的可變的元素集合,因此,列表中的元素是可以修改與刪除的。修改列表中元素的值可以用“=”賦值號給列表元素重新賦值,如下所示:>>>list1=["大學(xué)語文","高等數(shù)學(xué)","英語","政治經(jīng)濟(jì)學(xué)","中國文化","藝術(shù)欣賞"]>>>list1[3]=“宏觀經(jīng)濟(jì)學(xué)“#修改列表的第四個元>>>list1['大學(xué)語文','高等數(shù)學(xué)','英語','宏觀經(jīng)濟(jì)學(xué)','中國文化','藝術(shù)欣賞']修改或刪除列表元素
>>>list1=["大學(xué)語文","高等數(shù)學(xué)","英語","政治經(jīng)濟(jì)學(xué)","中國文化","藝術(shù)欣賞"]>>>dellist1[2]>>>list1['大學(xué)語文','高等數(shù)學(xué)','政治經(jīng)濟(jì)學(xué)','中國文化','藝術(shù)欣賞']#索引為2的元素被刪除>>>dellist1#刪除了list1對象>>>list1Traceback(mostrecentcalllast):File"<stdin>",line1,in<module>NameError:name'list1'isnotdefined>>>list1=["大學(xué)語文","高等數(shù)學(xué)","英語","政治經(jīng)濟(jì)學(xué)","中國文化","藝術(shù)欣賞"]>>>dellist1[0:3]>>>list1['政治經(jīng)濟(jì)學(xué)','中國文化','藝術(shù)欣賞']#刪除了索引為0-2的元素,不包括3。在python中,可以使用del語句來刪除列表或列表元素。修改或刪除列表元素
>>>list1=["大學(xué)語文","高等數(shù)學(xué)","英語","政治經(jīng)濟(jì)學(xué)","中國文化","藝術(shù)欣賞"]>>>list1.remove("政治經(jīng)濟(jì)學(xué)")>>>list1['大學(xué)語文','高等數(shù)學(xué)','英語','中國文化','藝術(shù)欣賞']>>>list3=[["大學(xué)語文",87],["高等數(shù)學(xué)",84],["英語",90]]>>>list3.remove(["英語",90])>>>list3[['大學(xué)語文',87],['高等數(shù)學(xué)',84]]可以用remove()方法來刪除指定的元素。列表腳本操作符與列表截取
表達(dá)式結(jié)果描述[1,2,3]+[4,5,6][1,2,3,4,5,6]組合成新列表['Hi!']*4['Hi!','Hi!','Hi!','Hi!']重復(fù)相應(yīng)次數(shù)構(gòu)成列表表達(dá)式結(jié)果描述List1[2]“英語”讀取列表中第3個元素List[-2]“中國文化”讀取列表中倒數(shù)第2個元素List1[3:]['政治經(jīng)濟(jì)學(xué)','中國文化','藝術(shù)欣賞']從第4個元素開始截取列表
List1[2:4]['英語','政治經(jīng)濟(jì)學(xué)']截取列從第3個元素到第4個元素list1=["大學(xué)語文","高等數(shù)學(xué)","英語","政治經(jīng)濟(jì)學(xué)","中國文化","藝術(shù)欣賞"]列表函數(shù)與方法
序號函數(shù)名作用1len(list)列表元素個數(shù)2max(list)返回列表元素最大值3min(list)返回列表元素最小值4list(seq)將元組轉(zhuǎn)換為列表。元組內(nèi)容見后。5enumerate(sequencd,[start=0])函數(shù)用于將一個可遍歷的數(shù)據(jù)對象(如列表、元組或字符串)組合為一個索引序列,同時列出數(shù)據(jù)和數(shù)據(jù)下標(biāo),一般用在
for循環(huán)當(dāng)中。列表函數(shù)與方法
序號方法作用1list.append(obj)用于在列表末尾添加新的對象。2list.count(obj)統(tǒng)計某個元素在列表中出現(xiàn)的次數(shù)。3list.extend(seq)在列表末尾一次性追加另一個序列中的多個值(用新列表擴(kuò)展原來的列表)。4list.index(obj)從列表中找出某個值第一個匹配項的索引位置。5list.insert(index,obj)將指定對象插入列表的指定位置6list.pop([index=-1])指定元素的索引值來移除列表中的某個元素(默認(rèn)是最后一個元素),并且返回該元素的值,如果列表為空或者索引值超出范圍會報一個異常。7list.reverse()反轉(zhuǎn)列表中的元素。8list.sort([reverse=False])對原列表進(jìn)行排序。reverse默認(rèn)值是False,可以給它賦值成True,那就是反向排序。列表生成式
列表生成式(ListComprehensions)是Python內(nèi)置的非常簡單、實用的用來創(chuàng)建list的方法。假如要生成列表[0,1,2,3,4,5,6,7,8,9],可以用列表生成式來實現(xiàn)。假如要生成列表[0,1,4,9,16,25,36,49,64,81],也可以用列表生成式來生成。>>>[xforxinrange(0,10)][0,1,2,3,4,5,6,7,8,9]>>>[x*xforxinrange(0,10)][0,1,4,9,16,25,36,49,64,81]列表生成式>>>[xforxinrange(0,10)ifx%2==0]>>>[m+nformin"ABC"fornin"123"]>>>L=['Hello','World','IBM','Apple’]>>>[s.lower()forsinL]請説出下列列表生成式表示的列表主講內(nèi)容Speechcontent3.4.2元組與列表的應(yīng)用3.4元組1.1Python簡介3.4.1元組的創(chuàng)建與基本操作元組Python中元組(tuple)數(shù)據(jù)類型與列表類似,不同之處在于元組中的元素是不能修改。元組的創(chuàng)建與基本操作
元組創(chuàng)建很簡單,只需要在“()”圓括號中添加元素,并使用逗號分隔即可。如果元組只有一個元素,通常在元素后加逗號。tup1=('physics','chemistry',1997,2000)tup2=(1,2,3,4,5)tup3="a","b","c","d"tup1=();#創(chuàng)建空元組tup1=(50,)#規(guī)范寫法元組與列表的應(yīng)用1.請用列表與元組實現(xiàn)生成一副撲克牌程序(不包括大小王)實現(xiàn)思路如下:為了存儲52張牌(不包括大小王),可以先定義一個臨時空列表,然后把2-10的數(shù)字添加到該列表中,再用列表的extend方法把J、Q、K、A也添加到此列表中。利用循環(huán)獲取撲克牌類型["黑桃","紅桃","方塊","草花"]中的元素,并和臨時列表中的元素進(jìn)行結(jié)合,把結(jié)合產(chǎn)生的結(jié)果添加到一個新的空列表card中。Card中的每一張牌用一個元組表示。例如:[(‘紅心’,2),(‘草花’,2),…(‘黑桃A’)]。元組與列表的應(yīng)用2.需求:請用列表與元組實現(xiàn)購物車實現(xiàn)思路如下:
首先要向客戶展示一個商品列表,列表包括商品編號、商品名稱與單價??蛻魪纳唐妨斜碇羞x擇商品放到購物車,客戶在選擇商品時,系統(tǒng)必須知道客戶賬戶的資金額,是否有購買選擇商品的足額資金。為了實現(xiàn)這項功能,客戶在選擇商品前系統(tǒng)需提示用戶輸入賬戶資金數(shù)是量,然后再展示商品列表給客戶選擇,客戶根據(jù)商品編號選擇商品。在選擇商品過程中要系統(tǒng)要完成商品價格與客賬戶余額比較。如果余額不足就不能選擇相應(yīng)的商品,余額夠,就允許客戶選擇購買,且把把客戶選擇的商品放入購物車。主講內(nèi)容Speechcontent3.5.2訪問字典中的值與字典的修改3.5字典1.1Python簡介3.5.1字典的定義方法3.5.3字典函數(shù)與方法3.5.4字典應(yīng)用舉例字典
字典(Dictionary)是一種無序可變?nèi)萜髂P?,可存儲任意類型對象。為什么還要用字典呢?
在列表中如果存放一個人的信息,如,姓名,性別,年齡等多個值,可以定義info=['egon','male',18]列表。但定義列表的目的不僅僅是為了存儲數(shù)據(jù),還需要考慮如何取到列表中的值,如果想取出年齡,可以用info[2]。但這是基于已經(jīng)知道該列表的第3個位置存放的是年齡的前提下,才知道索引2對應(yīng)的是年齡,而這完全只是一種假設(shè),并沒有真正意義上規(guī)定第三個位置存放的是年齡,于是Python需要尋找一種即可以存放多個任意類型的值,又可以硬性規(guī)定值的映射關(guān)系的類型,如key=value,這就導(dǎo)致了字典的出現(xiàn)。字典的定義方法
字典的創(chuàng)建方法是定義字典中的鍵值對,字典的每個鍵值
key=>value
對用冒號“
:
”分割,每組鍵值對之間用逗號分割,整個字典包括在花括號
“{}”
中即可。例如:stuDict={‘stuName’:‘Zara‘,‘stuGender’:’男’,‘stuAge’:21,‘stuClass':‘201804'}字典的定義方法
注意:字典中的鍵具有唯一性,如果重復(fù)定義,后面的鍵值會取代前鍵的值。
例如:dict={'a':1,'b':2,'b':'3’}#鍵b進(jìn)行了重復(fù)定義,該字典相當(dāng)于dict={'a':1,'b':3}字典的定義方法
在字典中,值可以是任一數(shù)據(jù)類型,但鍵必須是不可變的,如數(shù)字、字符串、或元組。
例如:info={'name':'egon’,
'hobbies':['play','sleep’],
'company_info':{
'name':'sun','type':'IT',
'emp_num':10000,
}}
該字典中的值有字符串,字典與列表。訪問字典中的值與修改字典
獲得字典中鍵值的方式有兩種:
第一種方法是“字典名[鍵]”,注意鍵必須是字符串類型。
如:a={'name':'tony’,'sex':'male’}a[‘name’]是獲取name的值。
訪問字典中的值與修改字典
第二種方法是使用字典的get方法。a.get(‘name‘)是獲取name值。
如果字典已知,可以任選一個,而當(dāng)不確定字典中是否存在某個鍵時,如果用第一個方法必須先判斷,再取值。if'name'ina.keys():printa['name‘]
因為不先判斷的話,直接使用a[‘name’]會導(dǎo)致報錯keyerror,提示沒有該key的值。
而用a.get(‘name’)則不會產(chǎn)生錯誤。如果存在該鍵Python的解釋器就返回相應(yīng)的value,如果不存在就返回None。訪問字典中的值與修改字典
修改字典包括向字典添加新的鍵/值對,修改或刪除已有鍵/值對。如果a={'name’:'tony’,'sex':'male’},a[‘name’]=’Jack’#修改name的值。
訪問字典中的值與修改字典a={'name':'tony’,'sex':'male’}dela['Name’]#刪除a字典中的'Name'key-value對。a.clear()#清空詞典所有健值對;dela#刪除字典刪除操作可刪除整個字典、清空字典或刪除字典中單一的元素。字典函數(shù)與方法序號函數(shù)描述1len(dict)計算字典元素個數(shù),即鍵的總數(shù)。2str(dict)輸出字典可打印的字符串表示。3type(variable)返回輸入的變量類型,如果變量是字典就返回字典類型。字典函數(shù)與方法序號函數(shù)描述1dict.clear()刪除字典內(nèi)所有元素2返回一個字典的淺復(fù)制3dict.fromkeys(seq[,val])
創(chuàng)建一個新字典,以序列
seq中元素做字典的鍵,val為字典所有鍵對應(yīng)的初始值4dict.has_key(key)如果鍵在字典dict里返回true,否則返回false5dict.items()以列表返回可遍歷的(鍵,值)元組數(shù)組6dict.keys()以列表返回一個字典所有的鍵7dict.setdefault(key,default=None)和get()類似,但如果鍵不存在于字典中,將會添加鍵并將值設(shè)為default8dict.update(dict2)把字典dict2的鍵/值對更新到dict里9dict.values()以列表返回字典中的所有值10pop(key[,default])刪除字典給定鍵
key所對應(yīng)的值,返回值為被刪除的值。key值必須給出。否則,返回default值。11popitem()隨機(jī)返回并刪除字典中的一對鍵和值。12dict.get(key,default=None)返回指定鍵的值,如果值不在字典中返回default值字典的應(yīng)用編程簡單模擬銀行ATM機(jī)的功能主講內(nèi)容Speechcontent3.6.2該問集的方法3.6集合1.1Python簡介3.6.1創(chuàng)建可變集合3.6.3集合運(yùn)算集合
Python3中的集合是一個無序不重復(fù)元素集,集合中元素必須是不可變類型。與列表和元組不同,集合是無序的,無法按索引訪問集合元素也能不用切片獲取元素。在Python中,集合分為可變集合(Set)與不可變集合(frozenset)兩種。
可變集合是指集合中的元素可以動態(tài)的增加或刪除。不可變集合是指集合中的元素不可改變。不可變集合用得很少,在此僅介紹可變集合set。創(chuàng)建可變集合可變集合可以使用大括號{}或者set()函數(shù)創(chuàng)建。s1=set('HelloChina!')#使用字符串創(chuàng)建可變集合s1s2={'11','22','33'}print(s1,s2)#輸出如下{'o','!','a','h','','e','n','C','l','i','H'}{'22','33','11'}print(type(s1),type(s2))<class'set'><class'set’>注意:創(chuàng)建一個空集合必須用set(),不能用{},因為{}是用來創(chuàng)建一個空字典的。創(chuàng)建可變集合list1=[1,2,"a"]#列表類型
tuple1=(1,2,"b")#元組類型
dict1={1:"a",2:"b"}#字典類型
#用列表,元組,字典創(chuàng)建可變集合
S_list=set(list1)
S_tuple=set(tuple1)
S_dict=set(dict1)
print(S_list,S_tuple,S_dict)#輸出為:{1,2,'a'}{1,2,'b'}{1,2}
注意:用字典創(chuàng)建集合時,集合中只有健,沒有鍵值,另外在用元組與列表創(chuàng)建集合時,元組與列表中的元素必須是不可變的,否則會報錯。用列表,元組,字典創(chuàng)建可變集合訪問集合的方法1.增加元素操作在python中,可用add與update方法向集合中增加元素。s1=set('python')
s1.add('why')
print(s1)
s2=set('python')
s2.update('why')
print(s2)#輸出如下:{'o','y','n','why','p','t','h'}{'o','y','n','w','p','t','h'}訪問集合的方法
2.刪除操作
在python中,可用remove、discard與pop函數(shù)刪除集合中的元素,用clear
方法用于移除集合中的所有元素。s1=set('abcdefghijk')
s1.remove('a')
print(s1)
s1.remove('w')#輸出如下:{'i','j','k','c','e','b','g','h','f','d'}File"D:/test/service1.py",line4,in<module>s1.remove('w')KeyError:'w'訪問集合的方法
2.刪除操作
在python中,可用remove、discard與pop函數(shù)刪除集合中的元素,用clear
方法用于移除集合中的所有元素。
如果元素不存在,用discard方法時,系統(tǒng)不會報錯。
pop方法也是刪除集合中的一個元素,如果集合是字典或字符轉(zhuǎn)換的集合,則隨機(jī)刪除一個元素,如果集合是由列表和元組轉(zhuǎn)換的集合,pop方法是從左邊刪除元素,主要原因是集合對list和tuple具有排序(升序)作用。clear方法用于移除集合中的所有元素。集合運(yùn)算
Python集合運(yùn)算有運(yùn)算交集、并集、差集、對稱差集、是子集與是父集判斷等,這些運(yùn)算可通過運(yùn)算符與相應(yīng)的函數(shù)來實現(xiàn)。集合運(yùn)算
1.取兩個集合的交集兩個集合A和B的交集是含有所有既屬于A又屬于B的元素。取兩個集合的交集可使用交集運(yùn)算符“&”或intersection方法來實現(xiàn)。s1=set(['a','b','c','d','e','f'])
s2=set(('d','e','f','g','h','i'))
print('交集:',ersection(s2))
print('交集:',s1&s2)#輸出如下:交集:{'e','d','f'}交集:{'e','d','f'}集合運(yùn)算2.取兩個集合的并集兩個集合的并集由兩個集合所有元素構(gòu)成的集合,而不包含其他元素。取兩個集合的并集可使用交集運(yùn)算符“|”或union方法來實現(xiàn)。s1=set(['a','b','c','d','e','f'])
s2=set(('d','e','f','g','h','i'))
print('并集:',s1.union(s2))
print('并集:',s1|s2)#輸出如下:并集:{'g','c','i','e','d','b','f','a','h'}并集:{'g','c','i','e','d','b','f','a','h'}集合運(yùn)算3.取兩個集合的差集
A與B的差集是所有屬于A且不屬于B的元素構(gòu)成的集合。取兩個集合的并集可使用交集運(yùn)算符“-”或difference方法來實現(xiàn)。s1=set(['a','b','c','d','e','f'])
s2=set(('d','e','f','g','h','i'))
print('差集:',s1.difference(s2))
print('差集:',s1-s2)#輸出如下:差集:{'c','a','b'}差集:{'c','a','b'}集合運(yùn)算4.取兩個集合的對稱差集對稱差集是把兩個集合中相同的元素去掉,然后再把兩個集合中剩下的元素組成一個新的集合。取兩個集合的對稱差集可使用對稱差集運(yùn)算符“^”或symmetric_difference方法來實現(xiàn)。s1=set(['a','b','c','d','e','f'])
s2=set(('d','e','f','g','h','i'))
print('對稱差集:',s1.symmetric_difference(s2))
print('對稱差集:',s1^s2)#輸出如下:對稱差集:{'h','b','a','i','g','c'}對稱差集:{'h','b','a','i','g','c'}集合運(yùn)算5.判斷是否是父集和子集的關(guān)系判斷一個集合是否是另一集合的父集運(yùn)算符“>=”或issuperset()方法來實現(xiàn),判斷一個集合是否是另一集合的子集運(yùn)算符“<=&”或issubset方法來實現(xiàn),如果是返回true,如果不是返回為false。s1=set(['a','b','c'])
s2=set(('a','b','c','d','h','i'))
print("issubset:",s1.issubset(s2))#判斷s1是不是s2的子集
print("issubset:",s1<=s2)
print("issuperset:",s2.issuperset(s1))#判斷s2是不是s1的父集
print("issuperset:",s2>=s1)#輸出如下:issubset:Trueissubset:Trueissuperset:Trueissuperset:True主講內(nèi)容Speechcontent3.7.2淺拷貝3.7深??截?.1Python簡介3.7.1深拷貝3.7.3深淺拷貝應(yīng)用示例拷貝
拷貝就是對象的復(fù)制,在python拷貝有深淺之分。賦值(=賦值)問題List2=list1是在內(nèi)存定義list2變量,由于該變量與list1變量指向同一個列表對象id(list1)==id(list2)的值為True。如果是指向的對象可變類型,比如列表,修改其中一個,另一個必定改變,也就是説,兩個對象數(shù)據(jù)完全共享。如果是不可變類型,比如字符串、元組,修改了其中一個,另一個并不會變。在python中對象除了賦值,還可以進(jìn)行拷貝??截愑猩?、淺拷貝之分??截恖ist1=[1,2,3,['a','b']]
list2=list1
print(id(list1)==id(list2))#True
list2[0]='a1'
list2[3][0]='b1'
print(list1,list2)#輸出['a1',2,3,['b1','b']]['a1',2,3,['b1','b']]深拷貝深拷貝
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 中國防火面料行業(yè)發(fā)展趨勢預(yù)測及投資戰(zhàn)略咨詢報告
- 2024-2026年中國手寫板行業(yè)市場供需格局及行業(yè)前景展望報告
- 堆浸行業(yè)深度研究報告
- 臨滄稅務(wù)咨詢合同范本
- 2025年度文化娛樂場所租賃及運(yùn)營管理合同
- 傳媒公司拍攝合同范本
- 532裝修合同范本
- 城區(qū)房屋租賃合同范本
- 2025年膨化食品生產(chǎn)線行業(yè)深度研究分析報告
- 礦山生產(chǎn)承包合同范本
- 廣東省梅州市梅縣區(qū)2023-2024學(xué)年八年級上學(xué)期期末數(shù)學(xué)試題
- 護(hù)理人員的職業(yè)安全防護(hù)
- 2024數(shù)據(jù)中心綜合布線工程設(shè)計
- 胸外科講課全套
- 醫(yī)療器械GSP相關(guān)
- 2023年海南省公務(wù)員錄用考試《行測》真題卷及答案解析
- 電力工程施工售后保障方案
- 中國心力衰竭診斷和治療指南2024解讀(完整版)
- 多源數(shù)據(jù)整合
- 新人教版高中數(shù)學(xué)必修第二冊第六章平面向量及其應(yīng)用教案 (一)
- 校園招聘活動策劃方案(6篇)
評論
0/150
提交評論