




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
第5講組合數(shù)據(jù)類型(列表、元組)列表元組學(xué)習(xí)目標(biāo)本講要點(diǎn)5.1認(rèn)識(shí)組合數(shù)據(jù)類型5.1認(rèn)識(shí)組合數(shù)據(jù)類型常用的序列類型有字符串、列表和元組。Python中的序列支持雙向索引:正向遞增索引和反向遞減索引正向遞增索引從左向右依次遞增,第一個(gè)元素的索引為0,第二個(gè)元素的索引為1,以此類推;反向遞減索引從右向左依次遞減,從右數(shù)第一個(gè)元素的索引為-1,第二個(gè)元素的索引為-2,以此類推。5.1認(rèn)識(shí)組合數(shù)據(jù)類型序列類型Python集合具備確定性、互異性和無序性三個(gè)特性。Python要求放入集合中的元素必須是不可變類型,Python中的整型、浮點(diǎn)型、字符串類型和元組屬于不可變類型,列表、字典及集合本身都屬于可變的數(shù)據(jù)類型。5.1認(rèn)識(shí)組合數(shù)據(jù)類型確定性:給定一個(gè)集合,那么任何一個(gè)元素是否在集合中就確定了?;ギ愋裕杭现械脑鼗ゲ幌嗤?。無序性:集合中的元素沒有順序,順序不同但元素相同的集合可視為同一集合。集合映射類型以鍵值對(duì)的形式存儲(chǔ)元素,鍵值對(duì)中的鍵與值之間存在映射關(guān)系。字典(dict)是Python唯一的內(nèi)置映射類型,字典的鍵必須遵守以下兩個(gè)原則:5.1認(rèn)識(shí)組合數(shù)據(jù)類型每個(gè)鍵只能對(duì)應(yīng)一個(gè)值,不允許同一個(gè)鍵在字典中重復(fù)出現(xiàn)。字典中的鍵是不可變類型。A詳細(xì)地址省份城市郵政編碼519088金鳳路6號(hào)廣東省珠海市B映射類型鍵-不重復(fù)鍵-不可變5.2列表列表:按照一定線性順序排列而成的數(shù)據(jù)項(xiàng)的集合。Python中列表可以存儲(chǔ)不同類型的數(shù)據(jù)。例如:A=[1,'xiaoWang','a',[2,'b']]5.2列表整數(shù)字符串列表Python列表的創(chuàng)建方式:(1)直接使用中括號(hào)“[]”創(chuàng)建(2)使用內(nèi)置的函數(shù)list()快速創(chuàng)建,如果設(shè)置參數(shù),則必須為可迭代對(duì)象。5.2.1創(chuàng)建列表li1=[]
#使用[]創(chuàng)建空列表li2=list()
#使用list()創(chuàng)建空列表li3=list(1)
#int類型數(shù)據(jù)不是可迭代類型,列表創(chuàng)建失敗li4=list('python')
#字符串類型是可迭代類型li5=list([1,'python'])
#列表類型是可迭代類型示例可迭代對(duì)象:支持通過for…in…語句迭代獲取數(shù)據(jù)的對(duì)象。目前,我們學(xué)習(xí)過可迭代的類型有字符串和列表,后續(xù)學(xué)習(xí)的集合、字典、文件也是可迭代類型的對(duì)象。使用isinstance()函數(shù)可以判斷目標(biāo)是否為可迭代對(duì)象,返回True表示為可迭代對(duì)象。fromcollections.abcimportIterablels=[1,2,3]print(isinstance(ls,Iterable))多學(xué)一招可迭代對(duì)象列表索引:可以正向、逆向索引正向:0~列表長度-1;逆向:-1~-列表長度我們可以通過下標(biāo)索引的方式來訪問列表中的值。
A=['道路自信','理論自信','制度自信','文化自信']print(A[0])print(A[len(A)-1])print(A[-1])print(A[-len(A)])5.2列表列表訪問列表中的元素的訪問方法:索引、切片、循環(huán)遍歷。5.2.2訪問列表元素li=["Java","C#","Python","PHP"]示例print(li[1])索引print(li[1:3])切片forxinli:print(x,end='')循環(huán)列表訪問向列表中添加元素:append()、extend()、insert()方法。5.2.3添加列表元素list_one=["Java","C#","Python","PHP"]示例list_one.append("C++")appendlist_one.extend(["Android","IOS",])extendlist_one.insert(2,“HTML")insert在列表末尾添加元素在列表末尾添加另一個(gè)序列的所有元素按照索引將元素插入列表的指定位置列表操作列表的排序是將元素按照某種規(guī)定進(jìn)行排列。list常用的排序方法:sort()、reverse(),Python3內(nèi)置函數(shù)sorted()。5.2.4元素排序li1=[6,2,5,3]示例li1.sort()sortli2=sorted(li1)sortedli1.reverse()reverse有序的元素會(huì)覆蓋原來的列表元素,不產(chǎn)生新列表產(chǎn)生排序后的新列表,排序操作不會(huì)對(duì)原列表產(chǎn)生影響(對(duì)可迭代對(duì)象排序)逆置列表,即把原列表中的元素從右至左依次排列存放列表操作list.sort(key=None,reverse=False)——默認(rèn)的參數(shù)狀態(tài)5.2.4元素排序問題:li1=[6,2,5,3]如何降序排序?刪除列表元素的常用方式:del語句、remove()方法、pop()方法和clear()方法。5.2.5刪除列表元素li_one=[6,2,5,3,3]示例delli_one[0]delli_one.remove(3)remove刪除列表中指定位置的元素移除列表中匹配到的第一個(gè)元素li_one.pop()popli_one.clear()clear移除列表中的某個(gè)元素,若未指定具體元素時(shí),則移除列表中的最后一個(gè)元素清空列表列表操作列表推導(dǎo)式:符合Python語法規(guī)則的復(fù)合表達(dá)式,它用于以簡潔的方式根據(jù)已有的列表構(gòu)建滿足特定需求的列表。列表推導(dǎo)式的基本格式如下:5.2.6列表推導(dǎo)式[expforxinlist]列表推導(dǎo)式還可以結(jié)合if判斷語句或for循環(huán)嵌套,生成更靈活的列表。帶有if語句的列表推導(dǎo)式for循環(huán)嵌套的列表推導(dǎo)式帶有if語句與for循環(huán)嵌套的列表推導(dǎo)式5.2.6列表推導(dǎo)式例:ls=[1,2,3,4,5,6,7,8]ls=[data*datafordatainls]print(ls)結(jié)果:[1,4,9,16,25,36,49,64]例:ls=[datafordatainlsifdata>4]print(ls)結(jié)果:[9,16,25,36,49,64]例:ls_one=[1,2,3]ls_two=[3,4,5]ls_three=[x+yforxinls_oneforyinls_two]print(ls_three)結(jié)果:[4,5,6,5,6,7,6,7,8]5.3元組元組(tuple):是關(guān)系數(shù)據(jù)庫中的基本概念,關(guān)系是一張表,表中的每行(即數(shù)據(jù)庫中的每條記錄)就是一個(gè)元組,每列就是一個(gè)屬性。在二維表里,元組也稱為行。Python中元組構(gòu)建方式:圓括號(hào)“()”、內(nèi)置函數(shù)tuple()構(gòu)建元組。5.3元組t1=() #使用()構(gòu)建元組t2=tuple() #使用tuple構(gòu)建元組元組創(chuàng)建當(dāng)使用圓括號(hào)“()”創(chuàng)建元組時(shí),如果元組中只包含一個(gè)元素,那么需要在該元素的后面添加逗號(hào),從而保證Python解釋器能夠識(shí)別其為元組類型。5.3元組t1=('python')t2=('python',)print(type(t1))print(type(t2))示例<class'str'><class'tuple'>結(jié)果元組創(chuàng)建元組訪問:索引、切片、循環(huán)遍歷。索引可以正向、逆向5.3元組tuple_demo=('p','y','t','h','o','n')示例tuple_demo[2]使用索引tuple_demo[2:5]使用切片foriintuple_demo:print(i)遍歷元組元組訪問5.4精彩實(shí)例為豐富校園文化生活,學(xué)校擬組織一場歌手大賽,從參賽選手中選拔出十名相對(duì)突出的學(xué)生,授予“校園十大歌手”稱號(hào)。比賽之中設(shè)置有評(píng)委組,每名選手演唱完畢之后會(huì)由評(píng)委組的十名評(píng)委打分。為保證比賽公平公正,防止作弊和惡意打分,計(jì)算得分時(shí)會(huì)先去掉最高分和最低分,再計(jì)算平均分。本實(shí)例要求編寫程序,實(shí)現(xiàn)根據(jù)需求計(jì)算平均分的功能。5.4.1十大歌手魔方陣又稱縱橫圖,是一種n行n列、由自然數(shù)1~n×n組成的方陣,該方陣中的數(shù)符合以下規(guī)律:1. 方陣中的每個(gè)元素都不相等。2. 每行、每列以及主、副對(duì)角線上的個(gè)元素之和都相等。本實(shí)例要求編寫程序,輸出一個(gè)5行5列的魔方陣。5.4.2神奇魔方陣3575.4.2神奇魔方陣采用窮舉法?對(duì)于n比較大時(shí),計(jì)算機(jī)也需要很長時(shí)間才能找出來。不用窮舉法將1,2,...,n^2按照某種規(guī)則一次填入到方陣中,得到的恰好是奇數(shù)次魔方陣,規(guī)則如下:1、將1填入第一行的中間,即(1,(n+1)//2)的位置2、下一個(gè)數(shù)填在上一個(gè)數(shù)的主對(duì)角線的上方,若上一個(gè)數(shù)的位置是(i,j),下一個(gè)數(shù)應(yīng)該填在(i1,j1),i1=i-1,j1=j-13、若填寫的位置下標(biāo)出界,則出界的值用n來代替,即若i=1=0,則取i1=n,若j-1=0,則取j1=n。4、若應(yīng)填的位置雖然沒有出界,但是已經(jīng)填有數(shù)據(jù)的話,則應(yīng)填在上一個(gè)數(shù)字的下面(行減1,列不變),即i1=i-1,j1=j。5、這樣循環(huán)填數(shù),直到把n*n個(gè)數(shù)全部填入方陣中,最后得到的是一個(gè)n階魔方陣。原文鏈接:/time_money/article/details/1102452715.4.2神奇魔方陣二維列表的創(chuàng)建與訪問創(chuàng)建5*5的二維列表,列表中元素為0:magic=[[0forxinrange(5)]foryinrange(5)]訪問:給第3行第2列的元素賦值為21magic[2][1]=215.4.2神奇魔方陣補(bǔ)充:圖書信息圖書館購進(jìn)一批圖書,請(qǐng)編寫程序,將這批圖書的信息錄入到計(jì)算機(jī)中,并且打印輸出購書清單,以及總價(jià)值。圖書信息包括書號(hào)、書名、單價(jià)、數(shù)量。5.9本章小結(jié)第5講組合數(shù)據(jù)類型2(集合、字典)集合字典學(xué)習(xí)目標(biāo)本講要點(diǎn)5.5集合集合:集合(set)是一個(gè)無序的不重復(fù)元素序列。Python的集合(set)本身是可變類型,但Python要求放入集合中的元素必須是不可變類型。創(chuàng)建方式:大括號(hào)“{}”、內(nèi)置函數(shù)set()5.5集合basket={'蘋果','橙子','香蕉','橙子','梨'}#使用{}構(gòu)建集合print(basket)s2=set([1,2]) #使用set構(gòu)建集合print(s2)注意:不能使用{}創(chuàng)建空集合({}用于創(chuàng)建空字典),空集合只能利用set()函數(shù)創(chuàng)建。5.5集合set_demo1={}set_demo2=set()print(type(set_demo1))print(type(set_demo2))<class'dict'><class'set'>結(jié)果示例5.5集合集合的訪問訪問:集合是無序的,不能使用索引、切片,只能通過for循環(huán)遍歷方式。例:set1={3,4,5,6}
forxinset1:
print(x,end="")集合是可變的,集合中的元素可以動(dòng)態(tài)增加或刪除。Python提供了一些內(nèi)置方法來操作集合,常見內(nèi)置方法如下:s.add(x):將元素x添加到集合s中,如果元素已存在,則不進(jìn)行任何操作s.remove(x):將元素x從集合s中移除,如果元素不存在,則會(huì)發(fā)生錯(cuò)誤。s.discard(x):移除集合中的元素,且如果元素不存在,不會(huì)發(fā)生錯(cuò)誤。x=s.pop():隨機(jī)刪除集合中的一個(gè)元素,并返回被刪除的元素s.clear():清空集合sset.copy():拷貝一個(gè)集合5.5集合集合的操作s1=set([1,2,3]) #傳入列表s2=set((2,3,4)) #傳入元組s3=set('python') #傳入字符串s4=set(range(5)) s1.add('s') #向集合s1中添加元素ss2.remove(3) #刪除集合s2中的元素3s3.discard('p') #刪除集合s3中的元素px=s4.pop() #隨機(jī)刪除集合s4中的元素,并返回該元素s3.clear() #清空集合s3s5=s2.copy() #拷貝集合s2并賦值給s55.5集合集合推導(dǎo)式:集合推導(dǎo)式的格式與列表推導(dǎo)式相似,區(qū)別在于集合推導(dǎo)式外側(cè)為大括號(hào)“{}”具體如下:5.5集合{expforxinsetifcond}5.6字典字典:字典的每個(gè)鍵值key=>value對(duì)用冒號(hào):
分割,每個(gè)對(duì)之間用逗號(hào)(,)分割,整個(gè)字典包括在花括號(hào){}
中。創(chuàng)建:
{}、內(nèi)置函數(shù)dict()格式:d={key1:value1,key2:value2,key3:value3}5.6.1創(chuàng)建字典d1={'A':123,12:'python'} #使用{}構(gòu)建集合d2=dict({'A':'123','B':'135'})#使用dict構(gòu)建元組注意:(1)字典元素?zé)o序;(2)鍵唯一(值則不必);(3)鍵必須是不可變類型,如字符串、數(shù)字(值數(shù)據(jù)類型不限)。5.6.1創(chuàng)建字典(1)字典元素?zé)o序,不能用索引、切片方式訪問(2)循環(huán)遍歷可以訪問字典中的“鍵”(3)通過“dict[鍵]”形式可以訪問鍵對(duì)應(yīng)的值(4)通過內(nèi)置方法dict.get(鍵)訪問對(duì)應(yīng)的值5.6.2字典的訪問dict1={'name':'張三','country':'China','score':95}forxindict1:print(x,end=',')#輸出字典中的鍵
print(f'{x}={dict1[x]}',end=",")#以[]號(hào)形式通過鍵可以訪問值
print(f'{x}={dict1.get(x)}')#用字典的內(nèi)置方法get訪問鍵值字典的訪問字典涉及的數(shù)據(jù)分為:鍵、值和元素(鍵值對(duì)),Python提供了keys()、values()和items()內(nèi)置方法,用于訪問字典5.6.2字典的訪問dict1={'name':'張三','country':'China','score':95}示例dict1.keys()dict1.values()dict_keys(['name','country','score'])dict1.items()獲取所有鍵獲取所有值獲取所有元素dict_values(['張三','China',95])dict_items([('name','張三'),('country','China'),('score',95)])字典的訪問列表元素為元組5.6.2字典的訪問內(nèi)置方法keys()、values()、items()的返回值都是可迭代對(duì)象,利用循環(huán)可以遍歷這些對(duì)象,示例代碼如下:dict1={'name':'張三','country':'China','score':95}forkeyindict1.keys():
print(key)fork,vindict1.items():print(k,v)字典的訪問添加和修改:通過為指定的鍵賦值或使用update()方法添加或修改元素。5.6.3元素的添加和修改通過鍵添加元素:字典變量[鍵]=值使用update()添加元素:dict.update(key=value)dict1={'name':'張三','country':'China','score':95}示例dict1['games']='跳水'通過鍵添加dict1.update(games='跳水') 使用update方法添加字典的操作修改元素的操作與添加元素的操作相同。修改字典元素的本質(zhì)是通過鍵獲取值,再重新對(duì)元素進(jìn)行賦值。5.6.3元素的添加和修改dict1={'name':'張三','country':'China','score':95}示例dict1['score']=98通過鍵修改dict1.update(score=99)使用update方法修改字典的操作刪除:Python支持通過pop()、popitem()和clear()方法刪除字典中的元素。5.6.4字典元素的刪除pop():根據(jù)指定鍵值刪除字典中的指定元素
格式:dict.pop(鍵)popitem():隨機(jī)刪除字典中的元素
格式:dict.popitem()clear():清空字典中的元素
格式:dict.clear()字典的操作5.6.4字典元素的刪除per_info={'001':'張三','002':'李四','003':'王五','004':'趙六',}print(per_info.pop('001'))#使用pop()刪除指定鍵為001的元素print(per_info)print(per_info.popitem())#使用popitem()方法隨機(jī)刪除元素print(per_info)字典的操作字典推導(dǎo)式:外側(cè)為大括號(hào)“{}”,且內(nèi)部需包含鍵和值兩部分,具體格式如下:5.6.5字典推導(dǎo)式{new_key:new_valueforkey,valueindict.items()}利用字典推導(dǎo)式可快速交換字典中的鍵和值,示例如下:old_dict={'name':'Jack','age':23,'height':185}new_dict={value:keyforkey,valueinold_dict.items()}print(new_dict)示例結(jié)果{'Jack':'name',23:'age',185:'height'}5.6.5字典推導(dǎo)式語法一:key:字典中的key
value:字典中的valuedict.items():序列condition:條件表達(dá)式key_exp:在for循環(huán)中,如果條件表達(dá)式condition成立(即條件表達(dá)式成立),返回對(duì)應(yīng)的key,value并作key_exp,value_expvalue_exp:在for循環(huán)中,如果條件表達(dá)式condition成立(即條件表達(dá)式成立),返回對(duì)應(yīng)的key,value并作key_exp,value_exp處理
{key_exp:value_expforkey,valueindict.items()ifcondition}知識(shí)拓展5.6.5字典推導(dǎo)式知識(shí)拓展#案例一:獲取字典中key值是小寫字母的鍵值對(duì)dict1={"a":10,"B":20,"C":True,"D":"helloworld","e":"python教程"}dict2={key:valueforkey,valueindict1.items()ifkey.islower()}print(dict2)#案例二:將字典中的所有key設(shè)置為小寫dict3={key.lower():valueforkey,valueindict1.items()}print(dict3)5.7精彩實(shí)例如今兩年偶像選秀節(jié)目風(fēng)頭正盛,吸引了許多喜歡唱跳、有一顆明星夢想的少年少女參加,青春有你正是節(jié)目之一。青春有你采用計(jì)票機(jī)制,選手獲得的票數(shù)越多,排名就越靠前。本實(shí)例要求編寫程序,接收選手的姓名和票數(shù),輸出排序后的成績。5.7.1青春有你5.7.1青春有你思路分析(1)以“選手:成績”字典形式存儲(chǔ)選手成績(2)將字典轉(zhuǎn)換成列表進(jìn)行排序,列表為二維列表時(shí),按內(nèi)部元素的第一個(gè)元素值排序(3)輸出成績通訊錄是記錄了聯(lián)系人姓名和聯(lián)系方式的名錄,手機(jī)通訊錄是最常見的通訊錄之一,人們可以在通
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- T/CSWSL 038-2024飼料原料發(fā)酵谷物醋糟
- T/CAR 17-2024制冷智能零售柜
- 上海自愿離婚協(xié)議(協(xié)議文本)3篇
- 撤資協(xié)議書范本6篇
- 二手機(jī)動(dòng)車買賣標(biāo)準(zhǔn)合同7篇
- 熬夜帶來的疾病
- 健康保養(yǎng)培訓(xùn)課件
- 運(yùn)動(dòng)中急救知識(shí)
- 2025益陽職業(yè)技術(shù)學(xué)院輔導(dǎo)員考試試題及答案
- 2025贛南衛(wèi)生健康職業(yè)學(xué)院輔導(dǎo)員考試試題及答案
- 2025屆江蘇省蘇州市八校高三下學(xué)期三模聯(lián)考物理試卷(含解析)
- 分子氧氧化丙烯制環(huán)氧丙烷銅基催化劑的制備及性能研究
- 找人辦事花錢協(xié)議書
- 2024-2025學(xué)年青島版(五四學(xué)制)小學(xué)數(shù)學(xué)二年級(jí)下冊(全冊)知識(shí)點(diǎn)復(fù)習(xí)要點(diǎn)歸納
- 人教版五下-6.1 同分母分?jǐn)?shù)加減法(教學(xué)課件)
- 2025年入團(tuán)考試必考題目試題及答案
- 商標(biāo)基礎(chǔ)知識(shí)試題及答案
- 中小學(xué)人工智能通識(shí)教育指南(2025年版)
- 職業(yè)技術(shù)學(xué)院裝配式建筑工程技術(shù)專業(yè)人才培養(yǎng)方案(2024版)
- 學(xué)校學(xué)生食品安全培訓(xùn)課件
- 福建省2024-2025學(xué)年高一下學(xué)期4月期中聯(lián)考英語試題(原卷版+解析版)
評(píng)論
0/150
提交評(píng)論