全國(guó)咨詢(xún)/投訴熱線:400-618-4000

首頁(yè)技術(shù)文章正文

Python的四種必會(huì)的內(nèi)置數(shù)據(jù)結(jié)構(gòu)

更新時(shí)間:2018-12-13 來(lái)源:黑馬程序員 瀏覽量:

對(duì)于每種編程語(yǔ)言一般都會(huì)規(guī)定一些容器來(lái)保存某些數(shù)據(jù),就像java的集合和數(shù)組一樣python也同樣有這樣的結(jié)構(gòu)

而對(duì)于python他有四個(gè)這樣的內(nèi)置容器來(lái)存儲(chǔ)數(shù)據(jù),他們都是python語(yǔ)言的一部分可以直接使用而無(wú)需額外的導(dǎo)入

一.列表(list)

  列表一種跟java和c中的數(shù)據(jù)很像的一種數(shù)據(jù)結(jié)構(gòu),他都是保存一系列相似,且有序元素的集合,不過(guò)不同的是列表中的元素可以不是同一種數(shù)據(jù)類(lèi)型,且列表的長(zhǎng)度是可變的

  可以動(dòng)態(tài)的增加可減少這一點(diǎn)則有點(diǎn)像java中的stringBuilder對(duì)象,列表中有一點(diǎn)值得注意的是在對(duì)列表進(jìn)行復(fù)制是,不能簡(jiǎn)單的使用賦值語(yǔ)句,這樣會(huì)使得兩個(gè)變量同時(shí)指向一個(gè)列表,當(dāng)一個(gè)改變時(shí)另一個(gè)變量的值也會(huì)改變,正確的復(fù)制方法是用copy()方法來(lái)進(jìn)行復(fù)制

  關(guān)于一個(gè)存儲(chǔ)結(jié)構(gòu)增刪查看則其必備的功能:

    1.列表元素的增加

      append的方法是將所要加的元素直接加到先前列表的末尾的方法,在增加的同時(shí)還會(huì)使得列表得長(zhǎng)度增加

      extend方法是將一個(gè)列表中得所有元素加拓展到另一個(gè)列表的末尾將兩個(gè)列表合并為一個(gè)列表

      insert方法是將一個(gè)元素插入到指定的位置,但是值得注意的是insert方法不能插到列表的末尾

    2.列表元素的刪除

      remove刪除列表中指定的值,如果列表中沒(méi)有remove參數(shù)中指定的值解釋器將會(huì)報(bào)錯(cuò)

      pop刪除指定索引位置對(duì)應(yīng)的對(duì)象,如果pop方法中沒(méi)有參數(shù)是則其默認(rèn)的是刪除列表的最后的一個(gè)對(duì)象,該方法的返回值就是對(duì)應(yīng)刪除的對(duì)象,若其指定的索不存在      時(shí)解釋器同樣會(huì)報(bào)錯(cuò)

    下面通過(guò)一個(gè)簡(jiǎn)單的例子來(lái)說(shuō)明以上方法的使用:

#在 Don't panic變?yōu)?on tap

phrase="Don't panic"


plist=list(phrase)  #將phrase表示的字符串轉(zhuǎn)化為列表



print(phrase)       #將該字符串輸出

print(plist)        #結(jié)果為['D', 'o', 'n', "'", 't', ' ', 'p', 'a', 'n', 'i', 'c']


plist.remove("'")   #將‘在列表中刪除


for i in range(3):

    plist.pop()     #將列表末尾的3個(gè)字符給刪除,'n','i','c'


plist.pop(0)        #將plist中索引對(duì)應(yīng)的對(duì)象刪除,也就是D


#此時(shí)list中的值為['o', 'n', 't', ' ', 'p', 'a']


plist.extend([plist.pop(5),plist.pop(4)]) #將p和a的位置交換


plist.insert(2,plist.pop(3)) #將空格插入到對(duì)應(yīng)索引為2的對(duì)象前


phrase =''.join(plist) #將列表轉(zhuǎn)化為字符串


print(phrase)

 3.列表元素的查看:
      值得說(shuō)明的是列表的查看和數(shù)組相似,都支持下標(biāo)查看不過(guò)不同的是列表的查看功能比數(shù)組更多

      a.中括號(hào)加下標(biāo)可以查看列表中的任意元素且元素的下標(biāo)也都是從0開(kāi)始的,這點(diǎn)與數(shù)組相同,但不同的是數(shù)組中的下標(biāo)不能為負(fù)數(shù),而列表可以  

      其表示的是從右到左,而正數(shù)則是從左到右

      b.列表中支持切片查看,也就是查看某一段元素其用法為:list[開(kāi)始位置:結(jié)束位置:步長(zhǎng)]其中所有元素都可以省,只需要在括號(hào)中有一個(gè)元素即可例如:

       list[: :2]表示開(kāi)始為0,結(jié)束為列表尾,步長(zhǎng)為2

   下面我們?nèi)稳灰砸欢魏?jiǎn)單的代碼來(lái)展示其用法:

phrase="Don't panic"


plist=list(phrase)

new_phase=''.join(plist[1:3])#在列表中截取on

print(new_phase)

new_phase=new_phase+''.join([plist[5],plist[4],plist[7],plist[6]])



#切片的實(shí)例,以及負(fù)數(shù)


plist[-1] # c


temp =plist[5:1:-1] #[' ', 't', "'", 'n']當(dāng)步長(zhǎng)為負(fù)數(shù)時(shí)其結(jié)果時(shí)從右到左遍歷

temp2=plist[::2]#['D', 'n', 't', 'p', 'n', 'c'],從頭遍歷到尾步長(zhǎng)為2

二.字典(dict)

  字典使用來(lái)保存一個(gè)鍵值對(duì)集合,其中每個(gè)唯一的鍵都有一個(gè)與之對(duì)應(yīng)的值,通常我們把字典稱(chēng)為關(guān)聯(lián)數(shù)組,如果你學(xué)過(guò)java的那么對(duì)字典就不會(huì)陌生了因?yàn)樗鋵?shí)就是java中的set集合,python的字典是無(wú)序的它不會(huì)保留你插入時(shí)的順序,同時(shí)由于字典使用的是一種高度優(yōu)化的散列算法所以即使是沒(méi)有順序字典一樣能快速的訪問(wèn)與一個(gè)鍵相關(guān)的值

1字典的定義:

其結(jié)構(gòu)為{鍵1:值1,鍵2:值2},可以看出字典的開(kāi)始和結(jié)束都是用大括號(hào)鍵和值用冒號(hào)隔開(kāi),不同鍵值對(duì)之間用逗號(hào)分隔,其中值可以為列表,另一個(gè)字典

2字典的增加:

字典時(shí)一個(gè)動(dòng)態(tài)的集合他可以在鍵對(duì)不存在時(shí)插入新的鍵值對(duì),但是字典中鍵必須進(jìn)行初始化后才可以引用例如:在一個(gè)商店中你不知到你的商店中的蘋(píng)果又沒(méi)  有時(shí)

你不可以直接的使用蘋(píng)果這個(gè)值而當(dāng)你像添加時(shí)也需要查明商店中是否有這樣物品,對(duì)于字典則無(wú)需這樣。因?yàn)樽值湟呀?jīng)分裝好了一個(gè)setdefault()方法只需直接調(diào)用即可

下面用一段簡(jiǎn)單代碼展示:

#字典的添加鍵值對(duì)

fruit={}

#當(dāng)直接使用不存在的鍵值對(duì)時(shí)


fruit['apple']+=1 #沒(méi)有對(duì)該鍵初始化而直接使用會(huì)出現(xiàn)keyError


#當(dāng)不使用setdefault方法時(shí)動(dòng)態(tài)的增加鍵值對(duì)

if 'apple' not in fruit:

    fruit['apple']=0 #初始化鍵值

fruit['apple']+=1 #增加蘋(píng)果的量

print(fruit['apple'])


#使用setdefault時(shí),其實(shí)就是設(shè)置一個(gè)默認(rèn)值,確保使用時(shí)這個(gè)使用的鍵存在即可


fruit.setdefault('apple',0)#當(dāng)鍵存在時(shí)這個(gè)語(yǔ)句沒(méi)有任何作用,相當(dāng)于上面選擇的分裝

fruit['apple']+=1

print(fruit['apple'])

3字典的遍歷:

對(duì)于一個(gè)集合來(lái)說(shuō)我們一般都會(huì)采用集合來(lái)遍歷其中的所有元素但是對(duì)于字典來(lái)說(shuō)單單只用循環(huán)的話并不夠方便因?yàn)閮H僅只用循環(huán)的話解釋器只會(huì)處理字典的鍵

對(duì)于其值任然需要用鍵來(lái)查值,對(duì)于這種問(wèn)題python提供了一個(gè)items()的方法使得可以直接使用循環(huán)變量來(lái)訪問(wèn)字典的鍵和值

下面通過(guò)一段簡(jiǎn)單的代碼說(shuō)明:

fruit={'apple':10,'pears':5,'bananas':20,'orange':4}

#直接使用for循環(huán)遍歷

for i in fruit:

    print("種類(lèi)",i,"數(shù)量",fruit)

#使用items方法遍歷

for i,v in fruit.items():

    print("種類(lèi)",i,"數(shù)量",v)

四.元組(tuple)

1元組的定義:

元組與列表密切相關(guān)列表是用中括號(hào)定義而元組則是用小括號(hào)定義(元素1,元素2,元素3,.....),值得注意的是當(dāng)只有一個(gè)對(duì)象是并不能僅僅(對(duì)象)這樣定義并不是元組,正確的定義方法是(對(duì)象,)這樣才是元組

在最后我有必要說(shuō)明一下:在這四個(gè)內(nèi)置結(jié)構(gòu)為空時(shí)的解釋器的表示方法:1.空列表[] 2.空字典{} 3.空集合set() 4.空元組()

   
作者:黑馬程序員人工智能+Python培訓(xùn)學(xué)院    
首發(fā):http://python.itheima.com/


分享到:
在線咨詢(xún) 我要報(bào)名
和我們?cè)诰€交談!