年末正在來(lái)臨沐悦,還有10來(lái)天就要到除夕了成洗。
大家是不是正在積極地備年貨,給家人買(mǎi)禮物呢藏否?
無(wú)論什么東西泌枪,都離不開(kāi)“容器”。比如給別人送化妝品秕岛,你應(yīng)該不會(huì)捧著各種水、乳误证、霜給家人继薛,都會(huì)有包裝瓶之類(lèi)的,而且如果包裝瓶上印有出名的牌子愈捅,這些液體的價(jià)格就會(huì)完全不同遏考。
跑偏了,總之容器是我們的生活必須品蓝谨。從十萬(wàn)年前用于儲(chǔ)存食物的葉子和各種土器灌具,到現(xiàn)在的快遞包裝盒,都屬于容器的范疇譬巫。容器的種類(lèi)有很多咖楣,但多半是同樣的功能,用于儲(chǔ)存各種商品芦昔,比如食物诱贿,貨物等等。
在計(jì)算機(jī)編程中咕缎,無(wú)論是哪種編程語(yǔ)言珠十,都會(huì)用到“容器”這個(gè)概念。與日常生活中的容器不同的是凭豪,編程語(yǔ)言中的容器并不是用來(lái)裝食物的焙蹭,而是用來(lái)裝數(shù)據(jù)的,而且可以裝各種不同類(lèi)型的數(shù)據(jù)嫂伞,比如上一次教程里介紹的數(shù)字孔厉,字符,和運(yùn)算操作等等末早。鑒于編程中的容器有點(diǎn)無(wú)聊烟馅,我們就不放照片了。
現(xiàn)在我們?cè)敿?xì)介紹一下Python語(yǔ)言中的容器container然磷,主要包括列表(list)郑趁、字典(dictionary)、集合(set)姿搜、元組(tuple)寡润。
列表(list)
python中的列表并不是數(shù)組捆憎,數(shù)組只能裝數(shù)字,而列表可以用來(lái)裝不同的數(shù)據(jù)元素梭纹。
比如下面這個(gè)例子:
上面的代碼的功能是先用“xs”建立了一個(gè)列表躲惰,第0個(gè)元素為3,第1個(gè)元素為1变抽,第2個(gè)元素為2础拨。
代碼xs[2]='foo'的作用是將“xs”中的第2個(gè)元素改成'foo'。
代碼xs.append('bar')是在“xs”的后面append(附加上)一個(gè)元素'foo'绍载。
代碼xs.pop()是移除“xs”列表中的一個(gè)元素(默認(rèn)是最后一個(gè)元素)诡宗,并返回該元素的值,所以print(x,xs)先顯示“x”的值击儡,也就是'bar'塔沃,再顯示“xs”的值,也就是“[3, 1, 'foo']”阳谍。
既然列表里有很多元素蛀柴,那么很自然地,我們可以用列表來(lái)做循環(huán)操作矫夯,比如我們可以用for循環(huán)來(lái)遍歷列表里的元素鸽疾,如:
在上圖中,可以用animal來(lái)指代animals這個(gè)列表中的每一個(gè)元素茧痒,于是就可以依次顯示出列表animals中的每一個(gè)元素肮韧。這種操作有什么好處呢?
比如旺订,我們可以用來(lái)對(duì)每個(gè)元素進(jìn)行統(tǒng)一的計(jì)算弄企,比如開(kāi)方:
字典(dictionary)
在我們學(xué)語(yǔ)文的時(shí)候,我們遇到不認(rèn)識(shí)的字詞区拳,都會(huì)查字典拘领,也就是根據(jù)字詞去查詢(xún)注明這個(gè)字的讀音、意義和用法樱调。比如“徐”這個(gè)字约素,我們可以在字典中查到其意思是“慢慢的”,于是就很容易明白“清風(fēng)徐來(lái)”的意思了笆凌。
在Python中圣猎,也有字典這個(gè)容器。
比如下面這個(gè)例子:
我們定義了d這個(gè)字典乞而,'cat'這個(gè)字對(duì)應(yīng)'cute'這個(gè)屬性送悔,'dog'這個(gè)字對(duì)應(yīng)'furry'這個(gè)屬性。
那么我們?nèi)绻樵?xún)cat的屬性,那么只需要用d['cat']就可以了欠啤。
此外荚藻,可以用print(d.get('monkey','N/A'))來(lái)判斷d這個(gè)字典里有沒(méi)有monkey的屬性,有的話(huà)就顯示出這個(gè)屬性洁段,否則就輸出N/A应狱。因?yàn)閐中沒(méi)有monkey這個(gè)字,所以輸出的就是N/A祠丝。
如果輸入print(d.get('cat','N/A'))疾呻,那么輸出的就是'cute'這個(gè)屬性。
集合(set)
集合也是一種容納數(shù)據(jù)的容器写半,和列表有差不多的功能罐韩。
不同的是,列表中可以出現(xiàn)相同的元素污朽,比如a = [0, 1, 0]這個(gè)列表有3個(gè)元素,長(zhǎng)度是3龙考。而如果a = {0蟆肆, 1, 0}這個(gè)集合中有2個(gè)元素晦款,分別是0和1炎功,長(zhǎng)度是2,也就是說(shuō)a={0缓溅,1蛇损,0}={0,1}坛怪。這里有一個(gè)細(xì)節(jié)淤齐,列表是用“[]”來(lái)表達(dá),而集合是用“{}”來(lái)表達(dá)袜匿。
我們看下面這一段代碼:
我們可以用animals.add這個(gè)指令來(lái)給animals這個(gè)集合添加元素更啄,可以是不同的元素,比如“fish”居灯,這樣就可以增加集合中元素的個(gè)數(shù)祭务。如果添加的元素是集合animals中已有的元素,那么animals中元素的個(gè)數(shù)就不變怪嫌。
元組(tuple)
還有一類(lèi)容器是元組义锥,元組是不可以改變順序的列表(list),與列表很相似岩灭。
元組比列表更強(qiáng)大的是拌倍,元組可以用做字典,也可以用作集合川背。
比如這個(gè)例子:
在例子中贰拿,d是一個(gè)字典蛤袒,“for x in range(10)”的意思是讓x從0到9循環(huán),注意range(10)是[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]這個(gè)整數(shù)列表膨更。
d是什么模樣呢妙真?如下:
這就像查表,如果查“(0荚守,1)”珍德,得到的結(jié)果是0。如果查詢(xún)的是“(x矗漾,x+1)”锈候,得到的結(jié)果是“x”的值。
總結(jié)一下敞贡,今天主要介紹了python中的“容器”這個(gè)概念泵琳,包括“列表”,“字典”誊役,“集合”和“元組”四個(gè)主要的容器获列,這些容器都可以用來(lái)容納不同的數(shù)據(jù)類(lèi)型,這些容器都可以用來(lái)進(jìn)行for循環(huán)的遍歷計(jì)算蛔垢。