年末正在來臨,還有10來天就要到除夕了。
大家是不是正在積極地備年貨,給家人買禮物呢?
無論什么東西,都離不開“容器”。比如給別人送化妝品,你應該不會捧著各種水、乳、霜給家人,都會有包裝瓶之類的,而且如果包裝瓶上印有出名的牌子,這些液體的價格就會完全不同。
跑偏了,總之容器是我們的生活必須品。從十萬年前用于儲存食物的葉子和各種土器,到現在的快遞包裝盒,都屬于容器的范疇。容器的種類有很多,但多半是同樣的功能,用于儲存各種商品,比如食物,貨物等等。
在計算機編程中,無論是哪種編程語言,都會用到“容器”這個概念。與日常生活中的容器不同的是,編程語言中的容器并不是用來裝食物的,而是用來裝數據的,而且可以裝各種不同類型的數據,比如上一次教程里介紹的數字,字符,和運算操作等等。鑒于編程中的容器有點無聊,我們就不放照片了。
現在我們詳細介紹一下Python語言中的容器container,主要包括列表(list)、字典(dictionary)、集合(set)、元組(tuple)。
列表(list)
python中的列表并不是數組,數組只能裝數字,而列表可以用來裝不同的數據元素。
比如下面這個例子:
上面的代碼的功能是先用“xs”建立了一個列表,第0個元素為3,第1個元素為1,第2個元素為2。
代碼xs[2]='foo'的作用是將“xs”中的第2個元素改成'foo'。
代碼xs.append('bar')是在“xs”的后面append(附加上)一個元素'foo'。
代碼xs.pop()是移除“xs”列表中的一個元素(默認是最后一個元素),并返回該元素的值,所以print(x,xs)先顯示“x”的值,也就是'bar',再顯示“xs”的值,也就是“[3, 1, 'foo']”。
既然列表里有很多元素,那么很自然地,我們可以用列表來做循環操作,比如我們可以用for循環來遍歷列表里的元素,如:
在上圖中,可以用animal來指代animals這個列表中的每一個元素,于是就可以依次顯示出列表animals中的每一個元素。這種操作有什么好處呢?
比如,我們可以用來對每個元素進行統一的計算,比如開方:
字典(dictionary)
在我們學語文的時候,我們遇到不認識的字詞,都會查字典,也就是根據字詞去查詢注明這個字的讀音、意義和用法。比如“徐”這個字,我們可以在字典中查到其意思是“慢慢的”,于是就很容易明白“清風徐來”的意思了。
在Python中,也有字典這個容器。
比如下面這個例子:
我們定義了d這個字典,'cat'這個字對應'cute'這個屬性,'dog'這個字對應'furry'這個屬性。
那么我們如果要查詢cat的屬性,那么只需要用d['cat']就可以了。
此外,可以用print(d.get('monkey','N/A'))來判斷d這個字典里有沒有monkey的屬性,有的話就顯示出這個屬性,否則就輸出N/A。因為d中沒有monkey這個字,所以輸出的就是N/A。
如果輸入print(d.get('cat','N/A')),那么輸出的就是'cute'這個屬性。
集合(set)
集合也是一種容納數據的容器,和列表有差不多的功能。
不同的是,列表中可以出現相同的元素,比如a = [0, 1, 0]這個列表有3個元素,長度是3。而如果a = {0, 1, 0}這個集合中有2個元素,分別是0和1,長度是2,也就是說a={0,1,0}={0,1}。這里有一個細節,列表是用“[]”來表達,而集合是用“{}”來表達。
我們看下面這一段代碼:
我們可以用animals.add這個指令來給animals這個集合添加元素,可以是不同的元素,比如“fish”,這樣就可以增加集合中元素的個數。如果添加的元素是集合animals中已有的元素,那么animals中元素的個數就不變。
元組(tuple)
還有一類容器是元組,元組是不可以改變順序的列表(list),與列表很相似。
元組比列表更強大的是,元組可以用做字典,也可以用作集合。
比如這個例子:
在例子中,d是一個字典,“for x in range(10)”的意思是讓x從0到9循環,注意range(10)是[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]這個整數列表。
d是什么模樣呢?如下:
這就像查表,如果查“(0,1)”,得到的結果是0。如果查詢的是“(x,x+1)”,得到的結果是“x”的值。
總結一下,今天主要介紹了python中的“容器”這個概念,包括“列表”,“字典”,“集合”和“元組”四個主要的容器,這些容器都可以用來容納不同的數據類型,這些容器都可以用來進行for循環的遍歷計算。