從0到1玩深度學習(0.04):Python語言中容納數據的容器類型(Containers)

年末正在來臨,還有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循環的遍歷計算。

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 最近在寫個性化推薦的論文,經常用到Python來處理數據,被pandas和numpy中的數據選取和索引問題繞的比較...
    shuhanrainbow閱讀 4,590評論 6 19
  • 本文為《爬著學Python》系列第九篇文章。 從現在開始算是要進入“真刀真槍”的Python學習了。之所以這么說,...
    SyPy閱讀 2,159評論 0 14
  • Spring Cloud為開發人員提供了快速構建分布式系統中一些常見模式的工具(例如配置管理,服務發現,斷路器,智...
    卡卡羅2017閱讀 134,886評論 18 139
  • 53.計算字符 在字符串中獲取字符值的數量, 可以使用字符串字符屬性中的計數屬性: let unusualMena...
    無灃閱讀 1,134評論 0 4
  • 可以說,我現在是人不像人、鬼不像鬼。關鍵是那個頭發,時常不知道怎么形容。打摩上下班,我可以想象那亂發的程度。簡直,...
    飄雨桐V閱讀 235評論 0 1