版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
學(xué)習(xí)目標(biāo)了解掌握熟悉Python語(yǔ)言中數(shù)據(jù)與其他語(yǔ)言的共性與區(qū)別13深淺拷貝的含義與實(shí)現(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ù)即變量的值,變量是用來(lái)反映/保持狀態(tài)以及狀態(tài)變化的。在程序設(shè)計(jì)語(yǔ)言中,針對(duì)不同的狀態(tài)就用不同類型的數(shù)據(jù)去標(biāo)識(shí)。本章將介紹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簡(jiǎn)介3.1.1Python3支持的數(shù)值數(shù)據(jù)類型3.1.3Python3中數(shù)值函數(shù)的應(yīng)用數(shù)值數(shù)據(jù)數(shù)字?jǐn)?shù)據(jù)類型用于存儲(chǔ)數(shù)值。在Python中,數(shù)值數(shù)據(jù)屬于不可變數(shù)據(jù)類型。所謂不可變類型就是當(dāng)為變量分配數(shù)值數(shù)據(jù)時(shí),Python將創(chuàng)建數(shù)值對(duì)象,且把變量指向創(chuàng)建的數(shù)值對(duì)象,當(dāng)更改指向數(shù)值對(duì)象變量的值時(shí),Python就重新創(chuàng)建新值的數(shù)值對(duì)象,把變量重新指向新的數(shù)值對(duì)象,而數(shù)值對(duì)象本身是不能被修改的。數(shù)值數(shù)據(jù)不可變數(shù)據(jù)類型的含義。X=1X=x+1棧內(nèi)存堆內(nèi)存X12Python3支持的數(shù)值數(shù)據(jù)類型Python3支持的數(shù)值數(shù)據(jù)類型有帶符號(hào)整數(shù),浮點(diǎn)實(shí)數(shù)與復(fù)數(shù)三種:
1.Int(有符號(hào)整數(shù)):該類型通常被稱為整數(shù),是沒(méi)有小數(shù)點(diǎn)的正或負(fù)數(shù)。
注意:
Python3中的整數(shù)是不限大小的。
2.
Float(浮點(diǎn)實(shí)數(shù)值):也稱為浮點(diǎn)數(shù),它們表示實(shí)數(shù)。例如,2.5,3.14就是一個(gè)浮點(diǎn)數(shù),浮點(diǎn)數(shù)也可以用科學(xué)符號(hào)表示,如+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ù)的實(shí)部是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ù)編號(hào)函數(shù)描述1abs(x)x的絕對(duì)值。2ceil(x)x的上限,不小于x的最小整數(shù)。4exp(x)x的指數(shù),返回e的x次冪。5floor(x)不大于x的最大整數(shù)。6log(x)x的自然對(duì)數(shù)(x>0)。7log10(x)以基數(shù)為10的x的對(duì)數(shù)(x>0)。8max(x1,x2,…)給定參數(shù)中的最大值,最接近正無(wú)窮大值。9min(x1,2,…)給定參數(shù)中的最小值,最接近負(fù)無(wú)窮小值。10modf(x)將x的分?jǐn)?shù)和整數(shù)部分切成兩項(xiàng)放入元組中,兩個(gè)部分與x具有相同的符號(hào)。整數(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ù)編號(hào)函數(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ù)編號(hào)函數(shù)描述1choice(seq)來(lái)自列表,元組或字符串的隨機(jī)項(xiàng)目。2randrange([start,]stop[,step])從范圍(start,stop,step)中隨機(jī)選擇的元素。3random()返回隨機(jī)浮點(diǎn)數(shù)r(0<=r<1),4seed([x])用來(lái)確定生成的隨機(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簡(jiǎn)介3.2.1訪問(wèn)字符串中的字符與更新字符串3.2.3字符串特殊運(yùn)算符3.2.5字符串內(nèi)置方法3.2.4字符串格式化運(yùn)算字符串
字符串是Python中最受歡迎、最常用的一種數(shù)據(jù)類型。在python中,加了引號(hào)(單引號(hào)或雙引號(hào))的字符就是字符串類型,用于標(biāo)識(shí)描述性的內(nèi)容,如姓名,性別,國(guó)籍,種族等等。注意:字符串也是不可變數(shù)據(jù)類型。
字符串的定義方法如下:str1='HelloWorld!’str2=str('HelloWorld!')
#用構(gòu)造方法創(chuàng)建字符串類型數(shù)據(jù)。
字符串?dāng)?shù)據(jù)類型與數(shù)值數(shù)據(jù)一樣是不可變數(shù)據(jù)類型,當(dāng)更改字符串值時(shí)會(huì)導(dǎo)致重新創(chuàng)建與分配對(duì)象。
注意:python并沒(méi)有字符類型,字符會(huì)被視為長(zhǎng)度為1的字符串。訪問(wèn)字符串中的字符與更新字符串str1=“helloworld”
print(“str1[0:4]:”,str1[0:4])#切片加上索引,不包括索引為4的字符
print("lastcharacteris:",str1[10])#使用索引#輸出如下:str1[0:4]:helllastcharacteris:d
在python3中要訪問(wèn)子串,需使用方括號(hào)的切片加上索引或直接使用索引來(lái)獲取子字符串。例如:訪問(wèn)字符串中的字符與更新字符串str1=“helloworld”print(id(str1))str1=str1[:6]+'Python’print(id(str1))#此處的id的值與前面不一樣print("UpdatedString:",str1)#生成"hello“與'Python'連接生成一個(gè)新字符串
#輸出如下:UpdatedString:helloPython更新字符串可以通過(guò)將變量分配給另一個(gè)字符串來(lái)更新現(xiàn)有的字符串。新值可以是與其原值相關(guān)或完全不同的字符串。例如:轉(zhuǎn)義字符
在Python中,可以用反斜杠表示轉(zhuǎn)義或不可打印字符的列表。單引號(hào)以及雙引號(hào)字符串的轉(zhuǎn)義字符被解析。反斜線符號(hào)十六進(jìn)制字符描述/說(shuō)明\a0x07鈴聲或警報(bào)。\b0x08退格。\n0x0a新一行。\nnn
八進(jìn)制符號(hào),其中n在0~7范圍內(nèi)。\r0x0d回車返回。\s0x20空格。\t0x09制表符。\v0x0b垂直制表符。\x
字符x。\xnn
十六進(jìn)制符號(hào),其中n在0~9,a~f或A~F范圍內(nèi)。字符串特殊運(yùn)算符運(yùn)算符說(shuō)明示例+連接,將運(yùn)算符的兩邊的值連接。a+b:HelloPython。*重復(fù),創(chuàng)建新字符串,連接相同字符串的指定副本個(gè)數(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)義字符的實(shí)際含義。原始字符串的語(yǔ)法與正常字符串的格式完全相同,除了原始字符串運(yùn)算符在引號(hào)之前加上字母“r”?!皉”可以是小寫(r)或大寫(R),并且必須緊靠在第一個(gè)引號(hào)之前。print(r'\n')
將打印
\n
,或者
print(R'\n')
將打印
\n,要注意的是如果不加r或R作為前綴,打印的結(jié)果就是一個(gè)換行。字符串格式化運(yùn)算符
Python中內(nèi)置的%操作符可用于格式化字符串操作,控制字符串的輸出格式。
當(dāng)格式化字符串時(shí)需要一個(gè)字符串作為模板,模板中有格式符,這些格式符為真實(shí)輸出時(shí)預(yù)留位置。Python可用一個(gè)tuple或字典將多個(gè)值傳遞給字符串模板,每個(gè)值對(duì)應(yīng)一個(gè)格式符,也可以直接用一個(gè)變量名來(lái)傳替一個(gè)參數(shù)。字符串格式化運(yùn)算符
使用元組傳替參數(shù)的格式:格式化字符串%(參數(shù)值1,參數(shù)值2,...)
說(shuō)明:格式化字符串中“%”為占位符,后跟類型碼,占位符的位置將用參數(shù)值替換。print("I'm%s.I'm%dyearold"%('Lili',19))
#該語(yǔ)句的輸出為I'mLili.I'm19yearold
在格式化字符串操作中也可以用字典來(lái)傳參數(shù)。print("I'm%(name)s.I'm%(age)dyearold"%{'name':'Lili','age':19})#該語(yǔ)句的輸出為I'mLili.I'm19yearold字符串格式化運(yùn)算符
使用元組傳替參數(shù)的格式:格式化字符串%(參數(shù)值1,參數(shù)值2,...)
說(shuō)明:格式化字符串中“%”為占位符,后跟類型碼,占位符的位置將用參數(shù)值替換。print("I'm%s.I'm%dyearold"%('Lili',19))
#該語(yǔ)句的輸出為I'mLili.I'm19yearold
在格式化字符串操作中也可以用字典來(lái)傳參數(shù)。print("I'm%(name)s.I'm%(age)dyearold"%{'name':'Lili','age':19})#該語(yǔ)句的輸出為I'mLili.I'm19yearold字符串格式化運(yùn)算符編號(hào)格式化符號(hào)轉(zhuǎn)換1%s在格式化之前通過(guò)str()函數(shù)轉(zhuǎn)換字符串。2%i帶符號(hào)的十進(jìn)制整數(shù)。3%d帶符號(hào)的十進(jìn)制整數(shù)。4%u無(wú)符號(hào)十進(jìn)制整數(shù)。5%o八進(jìn)制整數(shù)。6%x,%X十六進(jìn)制整數(shù)(“x”或“X”)。7%e,%E指數(shù)符號(hào)(’e‘或’E‘)。8%f浮點(diǎn)實(shí)數(shù)。9%g%f和%e。字符串的內(nèi)置方法Python提供了很多的內(nèi)置函數(shù)用于處理字符串。1.center函數(shù)
格式:center(width,fillchar)
作用:center函數(shù)返回一個(gè)指定的寬度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)計(jì)字符串里某個(gè)字符出現(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))作用:確定字符串或字符串的子字符串(如果啟動(dòng)索引結(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)中的元素以指定的字符連接生成一個(gè)新的字符串。-----------------------------------------------------------------------------str="-";seq=("a","b","c");#字符串序列printstr.join(seq);#輸出結(jié)果a-b-c-----------------------------------------------------------------------------字符串的內(nèi)置方法5.split方法格式:split(str,num)作用:用指定分隔符(str)對(duì)字符串進(jìn)行切片生成列表,如果參數(shù)num有指定值,則分隔num+1個(gè)子字符串。------------------------------------------------------------------------------str="Line1-abcdef\nLine2-abc\nLine4-abcd";
print(str.split());#以空格為分隔符,包含\n
print(str.split('',1));#以空格為分隔符,分隔成兩個(gè)#輸出結(jié)果['Line1-abcdef','Line2-abc','Line4-abcd']['Line1-abcdef','\nLine2-abc\nLine4-abcd']-----------------------------------------------------------------------------字符串的內(nèi)置方法6.ljust方法格式:ljust(width[,fillchar])作用:返回一個(gè)原字符串左對(duì)齊,并使用指定的填充字符填充至指定長(zhǎng)度形成新的字符串。如果指定的長(zhǎng)度小于原字符串的長(zhǎng)度則返回原字符串。-------------------------------------------------------------------------------str="HelloPYTHON!!";
print(str.ljust(20,'*'));#輸出為HelloPYTHON!!******-------------------------------------------------------------------------------字符串的內(nèi)置方法7.translate方法格式:translate(table,deletechars=)作用:根據(jù)參數(shù)table給出的表(包含256個(gè)字符)轉(zhuǎn)換字符串的字符,要過(guò)濾掉的字符放到
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)置方法請(qǐng)見書中相關(guān)內(nèi)容主講內(nèi)容Speechcontent3.3.2修改與刪除列表元素3.3列表1.1Python簡(jiǎn)介3.3.1列表的創(chuàng)建與列表值的訪問(wèn)3.3.3列表腳本操作符與列表截取3.3.5列表生成式3.3.4列表函數(shù)與方法列表
列表(list)是有序(有先后順序之分)的可變(可修改)的元素集合,是Python中最基本的數(shù)據(jù)結(jié)構(gòu),也是最常用的Python數(shù)據(jù)類型。在列表中的數(shù)據(jù)項(xiàng)不需要具有相同的類型。列表中的每個(gè)元素都有索引值,第一個(gè)索引是0,第二個(gè)索引是1,依此類推,每個(gè)元素可以根據(jù)索引值來(lái)獲得。
列表的創(chuàng)建與列表值的訪問(wèn)
如果要把列表(或元組)中的元素賦給變量,如list4=[1,2,3,4],可以通過(guò)如下命令把列表的值賦給a,b,c,d變量。>>>list4=[1,2,3,4]>>>a,b,c,d=list4>>>print(a,b,c,d)1234注意:該方法要求接收的變量個(gè)數(shù)要與列表元素一致,否則系統(tǒng)會(huì)報(bào)錯(cuò)。修改或刪除列表元素
由于列表是有序的可變的元素集合,因此,列表中的元素是可以修改與刪除的。修改列表中元素的值可以用“=”賦值號(hào)給列表元素重新賦值,如下所示:>>>list1=["大學(xué)語(yǔ)文","高等數(shù)學(xué)","英語(yǔ)","政治經(jīng)濟(jì)學(xué)","中國(guó)文化","藝術(shù)欣賞"]>>>list1[3]=“宏觀經(jīng)濟(jì)學(xué)“#修改列表的第四個(gè)元>>>list1['大學(xué)語(yǔ)文','高等數(shù)學(xué)','英語(yǔ)','宏觀經(jīng)濟(jì)學(xué)','中國(guó)文化','藝術(shù)欣賞']修改或刪除列表元素
>>>list1=["大學(xué)語(yǔ)文","高等數(shù)學(xué)","英語(yǔ)","政治經(jīng)濟(jì)學(xué)","中國(guó)文化","藝術(shù)欣賞"]>>>dellist1[2]>>>list1['大學(xué)語(yǔ)文','高等數(shù)學(xué)','政治經(jīng)濟(jì)學(xué)','中國(guó)文化','藝術(shù)欣賞']#索引為2的元素被刪除>>>dellist1#刪除了list1對(duì)象>>>list1Traceback(mostrecentcalllast):File"<stdin>",line1,in<module>NameError:name'list1'isnotdefined>>>list1=["大學(xué)語(yǔ)文","高等數(shù)學(xué)","英語(yǔ)","政治經(jīng)濟(jì)學(xué)","中國(guó)文化","藝術(shù)欣賞"]>>>dellist1[0:3]>>>list1['政治經(jīng)濟(jì)學(xué)','中國(guó)文化','藝術(shù)欣賞']#刪除了索引為0-2的元素,不包括3。在python中,可以使用del語(yǔ)句來(lái)刪除列表或列表元素。修改或刪除列表元素
>>>list1=["大學(xué)語(yǔ)文","高等數(shù)學(xué)","英語(yǔ)","政治經(jīng)濟(jì)學(xué)","中國(guó)文化","藝術(shù)欣賞"]>>>list1.remove("政治經(jīng)濟(jì)學(xué)")>>>list1['大學(xué)語(yǔ)文','高等數(shù)學(xué)','英語(yǔ)','中國(guó)文化','藝術(shù)欣賞']>>>list3=[["大學(xué)語(yǔ)文",87],["高等數(shù)學(xué)",84],["英語(yǔ)",90]]>>>list3.remove(["英語(yǔ)",90])>>>list3[['大學(xué)語(yǔ)文',87],['高等數(shù)學(xué)',84]]可以用remove()方法來(lái)刪除指定的元素。列表腳本操作符與列表截取
表達(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]“英語(yǔ)”讀取列表中第3個(gè)元素List[-2]“中國(guó)文化”讀取列表中倒數(shù)第2個(gè)元素List1[3:]['政治經(jīng)濟(jì)學(xué)','中國(guó)文化','藝術(shù)欣賞']從第4個(gè)元素開始截取列表
List1[2:4]['英語(yǔ)','政治經(jīng)濟(jì)學(xué)']截取列從第3個(gè)元素到第4個(gè)元素list1=["大學(xué)語(yǔ)文","高等數(shù)學(xué)","英語(yǔ)","政治經(jīng)濟(jì)學(xué)","中國(guó)文化","藝術(shù)欣賞"]列表函數(shù)與方法
序號(hào)函數(shù)名作用1len(list)列表元素個(gè)數(shù)2max(list)返回列表元素最大值3min(list)返回列表元素最小值4list(seq)將元組轉(zhuǎn)換為列表。元組內(nèi)容見后。5enumerate(sequencd,[start=0])函數(shù)用于將一個(gè)可遍歷的數(shù)據(jù)對(duì)象(如列表、元組或字符串)組合為一個(gè)索引序列,同時(shí)列出數(shù)據(jù)和數(shù)據(jù)下標(biāo),一般用在
for循環(huán)當(dāng)中。列表函數(shù)與方法
序號(hào)方法作用1list.append(obj)用于在列表末尾添加新的對(duì)象。2list.count(obj)統(tǒng)計(jì)某個(gè)元素在列表中出現(xiàn)的次數(shù)。3list.extend(seq)在列表末尾一次性追加另一個(gè)序列中的多個(gè)值(用新列表擴(kuò)展原來(lái)的列表)。4list.index(obj)從列表中找出某個(gè)值第一個(gè)匹配項(xiàng)的索引位置。5list.insert(index,obj)將指定對(duì)象插入列表的指定位置6list.pop([index=-1])指定元素的索引值來(lái)移除列表中的某個(gè)元素(默認(rèn)是最后一個(gè)元素),并且返回該元素的值,如果列表為空或者索引值超出范圍會(huì)報(bào)一個(gè)異常。7list.reverse()反轉(zhuǎn)列表中的元素。8list.sort([reverse=False])對(duì)原列表進(jìn)行排序。reverse默認(rèn)值是False,可以給它賦值成True,那就是反向排序。列表生成式
列表生成式(ListComprehensions)是Python內(nèi)置的非常簡(jiǎn)單、實(shí)用的用來(lái)創(chuàng)建list的方法。假如要生成列表[0,1,2,3,4,5,6,7,8,9],可以用列表生成式來(lái)實(shí)現(xiàn)。假如要生成列表[0,1,4,9,16,25,36,49,64,81],也可以用列表生成式來(lái)生成。>>>[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]請(qǐng)説出下列列表生成式表示的列表主講內(nèi)容Speechcontent3.4.2元組與列表的應(yīng)用3.4元組1.1Python簡(jiǎn)介3.4.1元組的創(chuàng)建與基本操作元組Python中元組(tuple)數(shù)據(jù)類型與列表類似,不同之處在于元組中的元素是不能修改。元組的創(chuàng)建與基本操作
元組創(chuàng)建很簡(jiǎn)單,只需要在“()”圓括號(hào)中添加元素,并使用逗號(hào)分隔即可。如果元組只有一個(gè)元素,通常在元素后加逗號(hào)。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.請(qǐng)用列表與元組實(shí)現(xiàn)生成一副撲克牌程序(不包括大小王)實(shí)現(xiàn)思路如下:為了存儲(chǔ)52張牌(不包括大小王),可以先定義一個(gè)臨時(shí)空列表,然后把2-10的數(shù)字添加到該列表中,再用列表的extend方法把J、Q、K、A也添加到此列表中。利用循環(huán)獲取撲克牌類型["黑桃","紅桃","方塊","草花"]中的元素,并和臨時(shí)列表中的元素進(jìn)行結(jié)合,把結(jié)合產(chǎn)生的結(jié)果添加到一個(gè)新的空列表card中。Card中的每一張牌用一個(gè)元組表示。例如:[(‘紅心’,2),(‘草花’,2),…(‘黑桃A’)]。元組與列表的應(yīng)用2.需求:請(qǐng)用列表與元組實(shí)現(xiàn)購(gòu)物車實(shí)現(xiàn)思路如下:
首先要向客戶展示一個(gè)商品列表,列表包括商品編號(hào)、商品名稱與單價(jià)??蛻魪纳唐妨斜碇羞x擇商品放到購(gòu)物車,客戶在選擇商品時(shí),系統(tǒng)必須知道客戶賬戶的資金額,是否有購(gòu)買選擇商品的足額資金。為了實(shí)現(xiàn)這項(xiàng)功能,客戶在選擇商品前系統(tǒng)需提示用戶輸入賬戶資金數(shù)是量,然后再展示商品列表給客戶選擇,客戶根據(jù)商品編號(hào)選擇商品。在選擇商品過(guò)程中要系統(tǒng)要完成商品價(jià)格與客賬戶余額比較。如果余額不足就不能選擇相應(yīng)的商品,余額夠,就允許客戶選擇購(gòu)買,且把把客戶選擇的商品放入購(gòu)物車。主講內(nèi)容Speechcontent3.5.2訪問(wèn)字典中的值與字典的修改3.5字典1.1Python簡(jiǎn)介3.5.1字典的定義方法3.5.3字典函數(shù)與方法3.5.4字典應(yīng)用舉例字典
字典(Dictionary)是一種無(wú)序可變?nèi)萜髂P?,可存?chǔ)任意類型對(duì)象。為什么還要用字典呢?
在列表中如果存放一個(gè)人的信息,如,姓名,性別,年齡等多個(gè)值,可以定義info=['egon','male',18]列表。但定義列表的目的不僅僅是為了存儲(chǔ)數(shù)據(jù),還需要考慮如何取到列表中的值,如果想取出年齡,可以用info[2]。但這是基于已經(jīng)知道該列表的第3個(gè)位置存放的是年齡的前提下,才知道索引2對(duì)應(yīng)的是年齡,而這完全只是一種假設(shè),并沒(méi)有真正意義上規(guī)定第三個(gè)位置存放的是年齡,于是Python需要尋找一種即可以存放多個(gè)任意類型的值,又可以硬性規(guī)定值的映射關(guān)系的類型,如key=value,這就導(dǎo)致了字典的出現(xiàn)。字典的定義方法
字典的創(chuàng)建方法是定義字典中的鍵值對(duì),字典的每個(gè)鍵值
key=>value
對(duì)用冒號(hào)“
:
”分割,每組鍵值對(duì)之間用逗號(hào)分割,整個(gè)字典包括在花括號(hào)
“{}”
中即可。例如:stuDict={‘stuName’:‘Zara‘,‘stuGender’:’男’,‘stuAge’:21,‘stuClass':‘201804'}字典的定義方法
注意:字典中的鍵具有唯一性,如果重復(fù)定義,后面的鍵值會(huì)取代前鍵的值。
例如: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,
}}
該字典中的值有字符串,字典與列表。訪問(wèn)字典中的值與修改字典
獲得字典中鍵值的方式有兩種:
第一種方法是“字典名[鍵]”,注意鍵必須是字符串類型。
如:a={'name':'tony’,'sex':'male’}a[‘name’]是獲取name的值。
訪問(wèn)字典中的值與修改字典
第二種方法是使用字典的get方法。a.get(‘name‘)是獲取name值。
如果字典已知,可以任選一個(gè),而當(dāng)不確定字典中是否存在某個(gè)鍵時(shí),如果用第一個(gè)方法必須先判斷,再取值。if'name'ina.keys():printa['name‘]
因?yàn)椴幌扰袛嗟脑?,直接使用a[‘name’]會(huì)導(dǎo)致報(bào)錯(cuò)keyerror,提示沒(méi)有該key的值。
而用a.get(‘name’)則不會(huì)產(chǎn)生錯(cuò)誤。如果存在該鍵Python的解釋器就返回相應(yīng)的value,如果不存在就返回None。訪問(wèn)字典中的值與修改字典
修改字典包括向字典添加新的鍵/值對(duì),修改或刪除已有鍵/值對(duì)。如果a={'name’:'tony’,'sex':'male’},a[‘name’]=’Jack’#修改name的值。
訪問(wèn)字典中的值與修改字典a={'name':'tony’,'sex':'male’}dela['Name’]#刪除a字典中的'Name'key-value對(duì)。a.clear()#清空詞典所有健值對(duì);dela#刪除字典刪除操作可刪除整個(gè)字典、清空字典或刪除字典中單一的元素。字典函數(shù)與方法序號(hào)函數(shù)描述1len(dict)計(jì)算字典元素個(gè)數(shù),即鍵的總數(shù)。2str(dict)輸出字典可打印的字符串表示。3type(variable)返回輸入的變量類型,如果變量是字典就返回字典類型。字典函數(shù)與方法序號(hào)函數(shù)描述1dict.clear()刪除字典內(nèi)所有元素2返回一個(gè)字典的淺復(fù)制3dict.fromkeys(seq[,val])
創(chuàng)建一個(gè)新字典,以序列
seq中元素做字典的鍵,val為字典所有鍵對(duì)應(yīng)的初始值4dict.has_key(key)如果鍵在字典dict里返回true,否則返回false5dict.items()以列表返回可遍歷的(鍵,值)元組數(shù)組6dict.keys()以列表返回一個(gè)字典所有的鍵7dict.setdefault(key,default=None)和get()類似,但如果鍵不存在于字典中,將會(huì)添加鍵并將值設(shè)為default8dict.update(dict2)把字典dict2的鍵/值對(duì)更新到dict里9dict.values()以列表返回字典中的所有值10pop(key[,default])刪除字典給定鍵
key所對(duì)應(yīng)的值,返回值為被刪除的值。key值必須給出。否則,返回default值。11popitem()隨機(jī)返回并刪除字典中的一對(duì)鍵和值。12dict.get(key,default=None)返回指定鍵的值,如果值不在字典中返回default值字典的應(yīng)用編程簡(jiǎn)單模擬銀行ATM機(jī)的功能主講內(nèi)容Speechcontent3.6.2該問(wèn)集的方法3.6集合1.1Python簡(jiǎn)介3.6.1創(chuàng)建可變集合3.6.3集合運(yùn)算集合
Python3中的集合是一個(gè)無(wú)序不重復(fù)元素集,集合中元素必須是不可變類型。與列表和元組不同,集合是無(wú)序的,無(wú)法按索引訪問(wèn)集合元素也能不用切片獲取元素。在Python中,集合分為可變集合(Set)與不可變集合(frozenset)兩種。
可變集合是指集合中的元素可以動(dòng)態(tài)的增加或刪除。不可變集合是指集合中的元素不可改變。不可變集合用得很少,在此僅介紹可變集合set。創(chuàng)建可變集合可變集合可以使用大括號(hào){}或者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)建一個(gè)空集合必須用set(),不能用{},因?yàn)閧}是用來(lái)創(chuàng)建一個(gè)空字典的。創(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)建集合時(shí),集合中只有健,沒(méi)有鍵值,另外在用元組與列表創(chuàng)建集合時(shí),元組與列表中的元素必須是不可變的,否則會(huì)報(bào)錯(cuò)。用列表,元組,字典創(chuàng)建可變集合訪問(wèn)集合的方法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'}訪問(wèn)集合的方法
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'訪問(wèn)集合的方法
2.刪除操作
在python中,可用remove、discard與pop函數(shù)刪除集合中的元素,用clear
方法用于移除集合中的所有元素。
如果元素不存在,用discard方法時(shí),系統(tǒng)不會(huì)報(bào)錯(cuò)。
pop方法也是刪除集合中的一個(gè)元素,如果集合是字典或字符轉(zhuǎn)換的集合,則隨機(jī)刪除一個(gè)元素,如果集合是由列表和元組轉(zhuǎn)換的集合,pop方法是從左邊刪除元素,主要原因是集合對(duì)list和tuple具有排序(升序)作用。clear方法用于移除集合中的所有元素。集合運(yùn)算
Python集合運(yùn)算有運(yùn)算交集、并集、差集、對(duì)稱差集、是子集與是父集判斷等,這些運(yùn)算可通過(guò)運(yùn)算符與相應(yīng)的函數(shù)來(lái)實(shí)現(xiàn)。集合運(yùn)算
1.取兩個(gè)集合的交集兩個(gè)集合A和B的交集是含有所有既屬于A又屬于B的元素。取兩個(gè)集合的交集可使用交集運(yùn)算符“&”或intersection方法來(lái)實(shí)現(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è)集合的并集兩個(gè)集合的并集由兩個(gè)集合所有元素構(gòu)成的集合,而不包含其他元素。取兩個(gè)集合的并集可使用交集運(yùn)算符“|”或union方法來(lái)實(shí)現(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.取兩個(gè)集合的差集
A與B的差集是所有屬于A且不屬于B的元素構(gòu)成的集合。取兩個(gè)集合的并集可使用交集運(yùn)算符“-”或difference方法來(lái)實(shí)現(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.取兩個(gè)集合的對(duì)稱差集對(duì)稱差集是把兩個(gè)集合中相同的元素去掉,然后再把兩個(gè)集合中剩下的元素組成一個(gè)新的集合。取兩個(gè)集合的對(duì)稱差集可使用對(duì)稱差集運(yùn)算符“^”或symmetric_difference方法來(lái)實(shí)現(xiàn)。s1=set(['a','b','c','d','e','f'])
s2=set(('d','e','f','g','h','i'))
print('對(duì)稱差集:',s1.symmetric_difference(s2))
print('對(duì)稱差集:',s1^s2)#輸出如下:對(duì)稱差集:{'h','b','a','i','g','c'}對(duì)稱差集:{'h','b','a','i','g','c'}集合運(yùn)算5.判斷是否是父集和子集的關(guān)系判斷一個(gè)集合是否是另一集合的父集運(yùn)算符“>=”或issuperset()方法來(lái)實(shí)現(xiàn),判斷一個(gè)集合是否是另一集合的子集運(yùn)算符“<=&”或issubset方法來(lái)實(shí)現(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簡(jiǎn)介3.7.1深拷貝3.7.3深淺拷貝應(yīng)用示例拷貝
拷貝就是對(duì)象的復(fù)制,在python拷貝有深淺之分。賦值(=賦值)問(wèn)題List2=list1是在內(nèi)存定義list2變量,由于該變量與list1變量指向同一個(gè)列表對(duì)象id(list1)==id(list2)的值為True。如果是指向的對(duì)象可變類型,比如列表,修改其中一個(gè),另一個(gè)必定改變,也就是説,兩個(gè)對(duì)象數(shù)據(jù)完全共享。如果是不可變類型,比如字符串、元組,修改了其中一個(gè),另一個(gè)并不會(huì)變。在python中對(duì)象除了賦值,還可以進(jìn)行拷貝??截愑猩睢\拷貝之分。拷貝list1=[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. 本站所有資源如無(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度個(gè)人車輛作為抵押物債務(wù)結(jié)算合同4篇
- 2025年度消費(fèi)者權(quán)益保護(hù)普法合同履行與市場(chǎng)監(jiān)管協(xié)議4篇
- 二零二五版美容美發(fā)產(chǎn)品原料綠色采購(gòu)與環(huán)保責(zé)任合同2篇
- 直播電商在2025年的市場(chǎng)格局
- 二零二五年度林業(yè)苗木冷鏈物流配送合同2篇
- 課題申報(bào)參考:明代徽州心學(xué)研究
- 2025年度個(gè)人消防工程勞務(wù)合同范本2篇
- 二零二五山地承包合同書:山地生態(tài)保護(hù)與可持續(xù)發(fā)展合作框架2篇
- 二零二五年度新能源儲(chǔ)能技術(shù)投資入股合同-@-1
- 二零二五年度大型會(huì)議活動(dòng)場(chǎng)地租賃合同4篇
- 環(huán)境監(jiān)測(cè)對(duì)環(huán)境保護(hù)的意義
- 2023年數(shù)學(xué)競(jìng)賽AMC8試卷(含答案)
- 神經(jīng)外科課件:神經(jīng)外科急重癥
- 2024年低壓電工證理論考試題庫(kù)及答案
- 2023年十天突破公務(wù)員面試
- 《瘋狂動(dòng)物城》中英文對(duì)照(全本臺(tái)詞)
- 醫(yī)院住院醫(yī)師規(guī)范化培訓(xùn)證明(樣本)
- 小學(xué)六年級(jí)語(yǔ)文閱讀理解100篇(及答案)
- 氣功修煉十奧妙
- 安徽省物業(yè)服務(wù)標(biāo)準(zhǔn)
- 勾股定理的歷史與證明課件
評(píng)論
0/150
提交評(píng)論