思維導(dǎo)圖
列表、元組
字典、集合
? 大抵是何物
數(shù)據(jù)結(jié)構(gòu)
??正如在現(xiàn)實(shí)世界中一樣,直到我們擁有足夠多的東西,才迫切需要一個(gè)儲(chǔ)存東西的容器,這也是我堅(jiān)持把數(shù)據(jù)結(jié)構(gòu)放在最后面的原因一一直到你掌握足夠多的技能,可以創(chuàng)造更多的數(shù)據(jù),你才會(huì)重視數(shù)據(jù)結(jié)構(gòu)的作用。這些儲(chǔ)存大量數(shù)據(jù)的容器,在Python稱(chēng)之為內(nèi)置數(shù)據(jù)結(jié)構(gòu)(Built-in Data Structure)。
我們?nèi)粘J褂玫木W(wǎng)站、移動(dòng)應(yīng)用,甚至是手機(jī)短信都依賴(lài)于數(shù)據(jù)結(jié)構(gòu)來(lái)進(jìn)行存儲(chǔ),其中的數(shù)據(jù)以一種特定的形式儲(chǔ)存在數(shù)據(jù)結(jié)構(gòu)中,在用戶(hù)需要的時(shí)候被拿出來(lái)展現(xiàn)。
Python有四種數(shù)據(jù)結(jié)構(gòu),分別是:列表、字典、元組,集合。每種數(shù)據(jù)結(jié)構(gòu)都有自己的特點(diǎn),并且都有著獨(dú)到的用處。
切片
切片操作是訪問(wèn)序列中元素的另一種方法,它可以訪問(wèn)一定范圍內(nèi)的元素。通過(guò)切片操作可以生成一個(gè)新的序列。實(shí)現(xiàn)切片操作的語(yǔ)法格式如下:
sname[start:end:step]
- sname:表示序列的名稱(chēng)。
- start:表示切片的開(kāi)始位置(包括該位置),如果不指定,則默認(rèn)為0。
- end:表示切片的截止位置(不包括該位置),如果不指定,則默認(rèn)為序列的長(zhǎng)度。
- step:表示切片的步長(zhǎng),如果省略,則默認(rèn)為1,當(dāng)省略該步長(zhǎng)時(shí),最后一個(gè)冒號(hào)也可以省略。
??具體是何物
Python有四種數(shù)據(jù)結(jié)構(gòu),分別是:列表、字典、元組,集合。每種數(shù)據(jù)結(jié)構(gòu)都有自己的特點(diǎn),并且都有著獨(dú)到的用處。
列表?? list?? [ ]
自我介紹
列表是另一種序列對(duì)象的形式,因此它繼承了許多字符串的操作參數(shù)。字符串只是字符的列表,但與字符串不同的是,Python列表可包含任何對(duì)象列表??稍诹斜碇写鎯?chǔ)數(shù)字、字符串、其他列表、字典和自己創(chuàng)建的任何其他對(duì)象類(lèi)型。因?yàn)樗菍?duì)象列表,并且所有Python 數(shù)據(jù)都存儲(chǔ)為對(duì)象。所以列表可以是所選信息的任意組合。
Python存儲(chǔ)對(duì)象列表(或者指向?qū)ο蟮拿郑淮鎯?chǔ)字符串或數(shù)字的列表。當(dāng)需要信息列表但又不想僅限于存儲(chǔ)信息的類(lèi)型時(shí),就可使用Python提供的列表。有關(guān) Python如何存儲(chǔ)對(duì)象的其他信息,請(qǐng)參閱“對(duì)象”部分。
精神面貌
列表的特征總結(jié)如下:
- 列表中的每一個(gè)元素都是可變的;
- 列表中的元素是有序的,也就是說(shuō)每一個(gè)元素都有一個(gè)位置;
- 列表可以容納Python 中的任何對(duì)象。
使用說(shuō)明
使用列表
Python 中通過(guò)用方括號(hào)把一系列對(duì)象或常量封裝起來(lái)從而創(chuàng)建列表,如下列語(yǔ)句:
list =[1,2,3,4]
songs=[I should be allowed to think', 'Birdhouse in your Soul']
使用方括號(hào)后會(huì)自動(dòng)暗示方括號(hào)中的對(duì)象為列表。Perl用戶(hù)注意到:在 tuple中用圓括號(hào)代替方括號(hào),本章稍后將講述。也可用下面的方式嵌套列表,實(shí)際上該列表包含兩個(gè)列表:
hex =[ [ 0.1,2,3,4,5,6,7,8,9],['A","B,"C,D,"E',F]]
類(lèi)似于字符串,可根據(jù)表項(xiàng)的索引引用列表。索引從0開(kāi)始。采用前面的示例,第一首歌曲的歌名可從下式得到:
print songs[0]
要訪問(wèn)完整的嵌套列表,需指定列表對(duì)象的索引:
print Numbers: ' , hex[0]
要訪問(wèn)嵌套列表的指定對(duì)象,用下列方法:
print 'D:" , hex[1][3]
問(wèn)理,相同的分片操作:
print 'A-C", hex[1][0:3]
要得到列表長(zhǎng)度,用len函數(shù):
print len(hex)
也可用運(yùn)算符“+”連接列表,其工作方式同字符串和數(shù)字對(duì)象:
hex[1]+ list
['A','B','C','D','E','F',0,1,2,3 ]
另外,可以用增加賦值符號(hào)向列表中添加表項(xiàng),但必須指定待添加的列表對(duì)象。如下例所示:
>>> songs+=[AKA Driver’]
最后,還可用數(shù)字對(duì)象與列表相乘,在列表內(nèi)重復(fù)某元素:
>>> list* 2
[0.1,2,3,0,1,2,3]
注意不能用列表與列表相乘,這樣做沒(méi)有意義。
但可創(chuàng)建基于簡(jiǎn)單表達(dá)式的新列表。例如,給定列表:
>>> list =[1.2,3,4]
要得到每個(gè)元素的立方值的列表,可使用函數(shù) map(第9章講述)與匿名lambda函數(shù)(第4章講述)的組合:
>>> cubes = map( lambda(x): x**3, list)
在Python 2.0中,只需重寫(xiě)以上語(yǔ)句,得到下列語(yǔ)句:
>>> cubes =[x*3 for x in list]
生理體征
對(duì)于數(shù)據(jù)的操作,最常見(jiàn)的是增刪改查這四類(lèi)。但是,有些可以四個(gè)都會(huì),有些只會(huì)幾個(gè),而列表,四個(gè)都會(huì)。??【聯(lián)想法:列表,列個(gè)表格,進(jìn)行數(shù)據(jù)操作,辦公的時(shí)候,列出excel表,增刪改查都闊以的喲】
當(dāng)然,要做四個(gè)動(dòng)作,得先知道列表長(zhǎng)得怎么樣,換成身體宮殿,是增加手臂,還是砍掉xx,那列表要砍掉些啥子,得知道它長(zhǎng)得啥樣。
增
(1)同其他類(lèi)型的 Python變量一樣,創(chuàng)建列表時(shí),也可以使用賦值運(yùn)算符“=”直接將一個(gè)列表賦值給變量,語(yǔ)法格式如下:
listname = [element 1,element 2,element 3,...,element n]
(2)創(chuàng)建空列表
在Python中,也可以創(chuàng)建空列表,例如,要?jiǎng)?chuàng)建一個(gè)名稱(chēng)為emptylist的空列表,可以使用下面的代碼:
emptylist=0
(3)創(chuàng)建數(shù)值列表
在 Python中,可以使用list()函數(shù)直接將range()函數(shù)循環(huán)出來(lái)的結(jié)果轉(zhuǎn)換為列表。
list()函數(shù)的基本語(yǔ)法如下:
list(data)
其中,data表示可以轉(zhuǎn)換為列表的數(shù)據(jù),其類(lèi)型可以是range對(duì)象、字符串、
元組或者其他可迭代類(lèi)型的數(shù)據(jù)。
(4)添加列表元素
語(yǔ)法格式如下:
listname.append(obj)
上面介紹的是向列表中添加一個(gè)元素,如果想要將一個(gè)列表中的全部元素添加到另一個(gè)列表中,可以使用列表對(duì)象的extend()方法實(shí)現(xiàn)。extend()方法的語(yǔ)法如下:
listname.extend(seq)
其中,listname為要添加元素的列表名稱(chēng),obj為要添加到列表末尾的對(duì)象。seq為要添加的列表。語(yǔ)句執(zhí)行后,seq的內(nèi)容將追加到listname 的后面。
刪
刪除列表
對(duì)于已經(jīng)創(chuàng)建的列表,不再使用時(shí),可以使用del語(yǔ)句將其刪除。語(yǔ)法格式如下:
Del listname
其中,listname為要?jiǎng)h除列表的名稱(chēng)。
查
對(duì)列表進(jìn)行統(tǒng)計(jì)和計(jì)算
(1)獲取指定元素出現(xiàn)的次數(shù)
使用列表對(duì)象的count()方法可以獲取指定元素在列表中的出現(xiàn)次數(shù)?;菊Z(yǔ)法格式如下:
listname.count(obj)
(2)獲取指定元素首次出現(xiàn)的下標(biāo)
使用列表對(duì)象的index()方法可以獲取指定元素在列表中首次出現(xiàn)的位置(即索引)。基本語(yǔ)法格式如下:
listname.index(obj)
參數(shù)說(shuō)明:
- listname:表示列表的名稱(chēng)。
- obj:表示要判斷是否存在的對(duì)象,這里只能進(jìn)行精確匹配,即不能是元
素值的一部分。
(3)統(tǒng)計(jì)數(shù)值列表的元素和
在Python中,提供了sum()函數(shù)用于統(tǒng)計(jì)數(shù)值列表中各元素的和。語(yǔ)法格式如下:
sum(iterable[,start])
參數(shù)說(shuō)明:
- iterable:表示要統(tǒng)計(jì)的列表。
- start:表示統(tǒng)計(jì)結(jié)果是從哪個(gè)數(shù)開(kāi)始(即將統(tǒng)計(jì)結(jié)果加上 start 所指定的
數(shù)),是可選參數(shù),如果沒(méi)有指定,默認(rèn)值為0。
改
對(duì)列表進(jìn)行排序
(1)使用列表對(duì)象的sort()方法
列表對(duì)象提供了sort()方法用于對(duì)原列表中的元素進(jìn)行排序。排序后原列表中的元素順序?qū)l(fā)生改變。列表對(duì)象的sort()方法的語(yǔ)法格式如下:
listname.sort(key=None,reverse=False)
參數(shù)說(shuō)明:
- listname:表示要進(jìn)行排序的列表。
- key:表示指定從每個(gè)元素中提取一個(gè)用于比較的鍵(例如,設(shè)置
“key=str.lower”表示在排序時(shí)不區(qū)分字母大小寫(xiě))。 - reverse:可選參數(shù),如果將其值指定為T(mén)rue,則表示降序排列;如果為False,則表示升序排列,默認(rèn)為升序排列。
(2)使用內(nèi)置的sorted()函數(shù)實(shí)現(xiàn)
在 Python 中,提供了一個(gè)內(nèi)置的 sorted()函數(shù),用于對(duì)列表進(jìn)行排序。使用該函數(shù)進(jìn)行排序后,原列表的元素順序不變。storted()函數(shù)的語(yǔ)法格式如下:
sorted(iterable,key=None,reverse=False)
參數(shù)說(shuō)明:
- iterable:表示要進(jìn)行排序的列表名稱(chēng)。
- key:表示指定從每個(gè)元素中提取一個(gè)用于比較的鍵(例如,設(shè)置
“key=str.lower”表示在排序時(shí)不區(qū)分字母大小寫(xiě))。 - reverse:可選參數(shù),如果將其值指定為T(mén)rue,則表示降序排列;如果為
False,則表示升序排列,默認(rèn)為升序排列。
方法匯總
list = [1,2,3]
more=[11,12,13]
list.append (4) #[1,2,3.4]
list.append (('5a', '5b')) #[1,2,3,4, (5a, 5b) ]
list.extend (more) #[1,2,3,4, ('5a', '5b'), 11,12,13]
list.index (11) #返問(wèn)5
list.insert (5,'Six') #[1,2,3,('5a','5b'),'Six',11,12,13]
list.pop() #返問(wèn)(并移去)13
list.pop(4) #返回tuple('5a','5b')
list.remove('Six') #[1,2.3.11,12]
list.reverse() #[12,11,3,2,1]
list.sort() #[1,2,3,11、12]
雖然None適用于任何對(duì)象,但是,在前面大家還沒(méi)遇到值None。實(shí)際上 None意味著無(wú)——它并不代表空列表或長(zhǎng)度為0的字符p,而是沒(méi)自他的對(duì)象。None很重要,因?yàn)樗捎妹讟?biāo)識(shí)無(wú)值對(duì)象。類(lèi)似C中的NULL值利 Perl中的undef。
元組?? tuple?? ( )
自我介紹
使用說(shuō)明
精神面貌
元組其實(shí)可以理解成一個(gè)穩(wěn)固版的列表,因?yàn)樵M是不可修改的,因此在列表中的存在的方法均不可以使用在元組上,但是元組是可以被查看索引的,方式就和列表一樣:
生理體征
增
(1)使用賦值運(yùn)算符直接創(chuàng)建元組
同其他類(lèi)型的Python變量一樣,創(chuàng)建元組時(shí),也可以使用賦值運(yùn)算符“=”直接將一個(gè)元組賦值給變量。語(yǔ)法格式如下:
tuplename = (element 1,element 2,element 3,....element n)
其中,tuplename表示元組的名稱(chēng),可以是任何符合Python命名規(guī)則的標(biāo)識(shí)符;elemnet 1.elemnet 2.elemnet 3.elemnet n表示元組中的元素,個(gè)數(shù)沒(méi)有限制。
(2)創(chuàng)建數(shù)值元組
在 Python中,可以使用tuple()函數(shù)直接將range()函數(shù)循環(huán)出來(lái)的結(jié)果轉(zhuǎn)換為數(shù)值元組。tuple()函數(shù)的基本語(yǔ)法如下:
tuple(data)
其中,data表示可以轉(zhuǎn)換為元組的數(shù)據(jù),其類(lèi)型可以是range對(duì)象、字符串、元組或者其他可迭代類(lèi)型的數(shù)據(jù)。
刪
刪除元組
對(duì)于已經(jīng)創(chuàng)建的元組,不再使用時(shí),可以使用del語(yǔ)句將其刪除。語(yǔ)法格式如下:
del tuplename
其中,tuplename為要?jiǎng)h除元組的名稱(chēng)。
查
改
哈哈??????,你忘了吧,我是改不了的。
元組??遠(yuǎn)祖,遠(yuǎn)祖是過(guò)去的,是歷史,不可以被改變的,skr????
字典?? dict?? { }
自我介紹1
編程世界中其實(shí)有很多概念都基于現(xiàn)實(shí)生活的原型,字典這種數(shù)據(jù)結(jié)構(gòu)的特征也正如現(xiàn)實(shí)世界中的字典一樣,使用名稱(chēng)-內(nèi)容進(jìn)行數(shù)據(jù)的構(gòu)建,在 Python中分別對(duì)應(yīng)著鍵(key)一值(value),習(xí)慣上稱(chēng)之為鍵值對(duì)。
上述圖就很直觀,其實(shí)字典,也類(lèi)似書(shū)本的目錄和內(nèi)容,目錄是key,內(nèi)容是value。
自我介紹2
精神面貌
字典的特征總結(jié)如下:
- 字典中數(shù)據(jù)必須是以鍵值對(duì)的形式出現(xiàn)的;
- 邏輯上講,鍵是不能重復(fù)的,而值可以重復(fù);
- 字典中的鍵(key)是不可變的,也就是無(wú)法修改的;而值(value)是可變的,可修改的,可以是任何對(duì)象。
使用說(shuō)明
字典和列表看上去很相似,但實(shí)際上它們區(qū)別很大。字典沒(méi)有順序。和列表相似,索引(鍵)必須惟一,但字典的鍵沒(méi)有邏輯順序。意即字典不是序列。不能用訪問(wèn)字符串、列表或tuple中條目一樣的方法去訪問(wèn)字典的條目。這帶來(lái)了一個(gè)壞處:當(dāng)分別兩次訪問(wèn)相同字典時(shí),由字典返回信息的順序并不是一致的。
但字典對(duì)象提供兩個(gè)方法keys和 values,用來(lái)返問(wèn)字典中定義的所有鍵和值的列表。例如,要返回前面示例中月份字典的月份列表,使用以下語(yǔ)句:
months = monthdays.keys( )
現(xiàn)在months對(duì)象是一個(gè)月份字符串的列表,這些月份字符串構(gòu)成了字典monthdays的鍵。函數(shù)len返回存儲(chǔ)于字典中的元素,鍵/值對(duì)的數(shù)目。語(yǔ)句:
len (inonthdays)
返回的止確值為12。
生理體征
對(duì)于數(shù)據(jù)的操作,最常見(jiàn)的是增刪改查這四類(lèi)。但是,有些可以四個(gè)都會(huì),有些只會(huì)幾個(gè),而字典,四個(gè)都會(huì)。
增
字典的創(chuàng)建和刪除
定義字典時(shí),每個(gè)元素都包含兩個(gè)部分“鍵”和“值”,并且在“鍵”和“值”之間使用冒號(hào)分隔,相鄰兩個(gè)元素使用逗號(hào)分隔,所有元素放在一個(gè)大括號(hào)“0”中。語(yǔ)法格式如下:
dictionary ={'key1':'value1', 'key2":'value2', ..., 'keyn':'valuen', }
參數(shù)說(shuō)明:
- dictionary:表示字典名稱(chēng);
- key1.key2…keyn:表示元素的鍵,必須是唯一的,并且不可變,例如可
以是字符串、數(shù)字或者元組; - value1. value2…valuen:表示元素的值,可以是任何數(shù)據(jù)類(lèi)型,不是必須
唯一。
刪
查
遍歷字典
使用字典對(duì)象的items()方法可以獲取字典的“鍵-值對(duì)”列表。其語(yǔ)法格式如下:
dictionary.items()
其中,dictionary為字典對(duì)象;返回值為可遍歷的(鍵-值對(duì))的元組列表。想要獲取到具體的“鍵-值對(duì)”,可以通過(guò)for循環(huán)遍歷該元組列表。
改
集合?? set?? { }
精神面貌
集合則更接近數(shù)學(xué)上集合的概念。每一個(gè)集合中的元素是無(wú)序的、不重復(fù)的任意對(duì)象,我們可以通過(guò)集合去判斷數(shù)據(jù)的從屬關(guān)系,有時(shí)還可以通過(guò)集合把數(shù)據(jù)結(jié)構(gòu)中重復(fù)的元素減掉。
生理體征
對(duì)于數(shù)據(jù)的操作,最常見(jiàn)的是增刪改查這四類(lèi)。但是,有些可以四個(gè)都會(huì),有些只會(huì)幾個(gè),而集合,只會(huì)三個(gè)。
集合不能被切片也不能被索引,除了做集合運(yùn)算之外,集合元素可以被添加還有刪除︰
a_set = {1,2,3,4}
a_set.add(5)
a_set.discard(5)
增
集合的創(chuàng)建
(1)直接使用“{ }”創(chuàng)建集合
setname = {element 1,element 2,element 3,…element n}
參數(shù)說(shuō)明:
- setname:表示集合的名稱(chēng),可以是任何符合 Python命名規(guī)則的標(biāo)識(shí)符。elemnet 1,elemnet 2,elemnet 3,…elemnet n:表示集合中的元素,個(gè)數(shù)沒(méi)有限制。
(2)使用set()函數(shù)創(chuàng)建
在Python中,可以使用set()函數(shù)將列表、元組等其他可迭代對(duì)象轉(zhuǎn)換為集合。
set(函數(shù)的語(yǔ)法格式如下:
setname = set(iteration)
參數(shù)說(shuō)明:
- setname:表示集合名稱(chēng)。
iteration:表示要轉(zhuǎn)換為集合的可迭代對(duì)象,可以是列表、元組、range對(duì)象等,也可以是字符串。如果是字符串,返回的集合將是包含全部不重復(fù)字符的集合。
集合的添加
(1)向集合中添加元素
向集合中添加元素可以使用add()方法實(shí)現(xiàn),
語(yǔ)法格式如下:setname.add(element)
參數(shù)說(shuō)明:
- setname:表示要添加元素的集合。
- element:表示要添加的元素內(nèi)容,只能使用字符串、數(shù)字及布爾類(lèi)型的True或者False等,不能使用列表、元組等可迭代對(duì)象。
刪
從集合中刪除元素
在Python 中,可以使用del命令刪除整個(gè)集合,也可以使用集合的pop( )方法或者remove( )方法刪除一個(gè)元素,或者使用集合對(duì)象的clear()方法清空集合,即刪除集合中的全部元素,使其變?yōu)榭占稀?/p>
mr.remove('零基礎(chǔ)學(xué)Python') #移除指定元素
print('使用remove()方法移除指定元素后: ',mr)
mr.pop() #刪除一個(gè)元素
print('使用pop()方法移除一個(gè)元素后: ',mr)
mr.clear() #清空集合
print('使用clear()方法清空集合后: ',mr)
查
改
??技巧
??
??
??
??專(zhuān)業(yè)英語(yǔ)學(xué)習(xí)角
搜索
sorted
含義:分類(lèi),整理;挑選;把…歸類(lèi);排序的
記憶:
熱度:??
reversed
詞義:推翻;(使)反轉(zhuǎn);(使)顛倒;(使)翻轉(zhuǎn);顛倒的
記憶:諧音:若我死。
熱度:??
enumerate
含義:列舉,枚舉,數(shù)
記憶:詞根詞綴:e-,向外。number,數(shù)字,數(shù)數(shù)。
熱度:??
import
含義:輸入;進(jìn)口;重要性;意義
記憶:im(向內(nèi)的)+port(港口)=import(進(jìn)口)
熱度:????
append
含義:附加;添加;貼上
記憶:詞源詞綴:前綴ap-同ad-.詞根pend,懸掛,見(jiàn)pendulum,鐘擺。ap-來(lái),臨近±pend-懸掛,垂→依附
熱度:????
extend
含義:延伸;擴(kuò)大;推廣;延長(zhǎng);伸展;給予;發(fā)出;伸出;增加
記憶:詞源詞綴:ex(出)+tend(伸展)=extend(向外延生)
熱度:★★
price
含義:價(jià)格
記憶:詞源詞根:可以追溯到它的詞根“pris”,表示“價(jià)格、價(jià)值”的意思。
熱度:??
sale
含義:拍賣(mài);賣(mài),出賣(mài);銷(xiāo)售額,銷(xiāo)售;銷(xiāo)路
記憶:詞源詞根:來(lái)源于史前日耳曼語(yǔ)saljan。=【同源詞】sell詞組/短語(yǔ)on sale出售;折價(jià)出售來(lái)自sell的名詞形式,比較tale,tell。sale這個(gè)詞的詞根是“sal”,來(lái)源于拉丁語(yǔ)中的“salire”,意思是“跳躍、賣(mài)出”。后來(lái),“salire”經(jīng)過(guò)演變,成為了現(xiàn)代英語(yǔ)中的“sale”。
熱度:??
set
含義:設(shè)置;放置,安置;集合;一套,一副
記憶:詞源詞根:【同源詞】sect動(dòng)詞set的原始意義是“坐的原因cause to sit”,來(lái)源于史前日耳曼語(yǔ)setjan或sitjan(英語(yǔ)sit的詞源)。
熱度:??????????
del
含義:微分算子,倒三角形
記憶:
熱度:????
remove
含義:去除;開(kāi)除;脫掉,拿下
記憶:詞根詞綴:re一再,move移動(dòng)。
熱度:????
dictionary
含義:字典
熱度:??
value
詞義:值
熱度:??
dict
含義:字典
熱度:??
zip
含義:拉鏈
熱度:????
tuple
含義:元組
熱度:????
list
含義:列表
熱度:????
clear
含義:清除
熱度:??
default
含義:系統(tǒng)默認(rèn)值
熱度:??
iteration
含義:迭代
熱度:??文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-810820.html
文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-810820.html
到了這里,關(guān)于Python-基礎(chǔ)篇-數(shù)據(jù)結(jié)構(gòu)-列表、元組、字典、集合的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!