當前位置:
首頁 > 知識 > 簡介Python3中的元組

簡介Python3中的元組

簡介Python3中的元組

簡介

Python3 中元組表現為如下形式:

簡介Python3中的元組

元組(tuple)是一種靜態的(immutable)或者說是不可變(unchangeable)的數據結構,裡面的元素按照一定的順序排列。它是靜態的,所以元組裡的元素不能被修改。

元組用於給數據分組。元組中的每一個元素稱之為「項」(item)。

元組中的值被包裝在括弧中,並用逗號分隔,空元組可以寫成coral=,不過只有一項元素的元組必須使用逗號:coral = ("blue coral",)。

如果使用print函數列印元組,會得到如下的輸出,其中元組依然『』用括弧包裹。

簡介Python3中的元組

當你試圖理解Python中的元組或者其他集合類型的數據結構時,去想一下電腦中存在的不同集合是有幫助的:不同類型文件的排列,你的歌曲清單,瀏覽器中的書籤,你的郵箱,你在流媒體上獲得的視頻集合等等。

元組和列表很像,不過元組中的值是不可修改的。也正因為如此,當你在代碼中使用元組時,就意味著告訴他人你不想集合中的數據被修改。同時,因為元組中的值不可變,因此相比於使用列表,你的代碼能通過使用元組得到優化。

元組的索引

作為一個有序的元素集合,元組中的任一項都可以通過索引被單獨訪問。

每一項都與一個索引號相關聯,它是一個整數值,從0開始計數。

對於coral元組,它的索引如下所示:

簡介Python3中的元組

元組中的第一項,字元串「blue coral」的索引是0,元組的最後一個元素是「elkhorn coral」,索引號是3。

因為元組中的每一項都有一個對應的索引號,因此我們可以單獨地訪問每一個元素。

現在我們通過索引號單獨訪問某個元素:

簡介Python3中的元組

如上表所示,索引號的範圍是0~3,所以我們可以通過索引號去訪問其中的每個元素:

簡介Python3中的元組

如果我們訪問此元組時使用一個超過3的索引號,它會提示說索引號越界。

簡介Python3中的元組

索引號除了可以是正數,還可以是負數形式,它是從後往前倒著數地,從-1開始。

當我們去具體訪問一個長元組的最後幾項時,負數形式的索引號很有效。

還是針對coral元組,它的負數形式的索引號如下:

簡介Python3中的元組

所以如果你想通過負數形式的索引列印出「blue coral」這一項,可以寫成如下形式:

簡介Python3中的元組

我們還可以通過『+』操作符來將元組中的字元串值和另一個字元串連接:

簡介Python3中的元組

我們把索引號為1的元素的值和字元串「This reef is made up of」組合在一起。我們也可以使用『+』來連接兩個或者多個元組。

元組中的每一項都有對應的索引號,我們可以很容易地去訪問元組中的每一個元素。

元組的切片

我們使用索引號去訪問元組中的某一項。切片(slice)通過構造一個索引號的範圍[x:y]可以同時獲得元組中的多個值。

假設我們想獲取coral元組中間的值,可以用如下方式構造一個切片。

簡介Python3中的元組

當我們在構造[1:3]這個切片時,第一個表示切片開始的地方(包含此索引號),第二個數表示切片結束的地方(不包括此索引號),因此[1:3]能夠取出索引號為1和2的元素。

如果你想得到除了端點元素的剩餘所有元素,你可以在[x:y]中忽略某一項。

如你想列印出coral元組中的前三個元素,你可以寫成如下形式:

簡介Python3中的元組

這就列印出元組中前面部分的信息,在索引號為3的元素之前停止。

為了列印出元組後面部分的信息,可以忽略掉[x:y]中y的值:

簡介Python3中的元組

我們也可以使用負數形式的索引號構造切片來訪問元組:

簡介Python3中的元組

切片中的最後一個變數是步長(stride),它是指當我們取出前一項時,移動多少個元素去取下一個值。

前面的幾個例子,我們都忽略了這一變數,使用默認值1。因此我們能夠取得兩個索引號中間的所有元素。

完整的切片構造方式[x:y:z],z是指步長。我們來構造一個長一點的元組,通過步長為2的切片去訪問它:

簡介Python3中的元組

我們構造的切片[1:11:2]列印出從索引號為1(包括此索引號),到索引號為11(不包括此索引號)的值,步長為2告訴我們隔一項列印一個。

我們可以忽略切片中的前兩項,只使用步長變數:

簡介Python3中的元組

通過把切片中的步長設置為3,每個索引號能夠被3整除的元素列印出來:

0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12

通過使用正數或者負數形式的切片,並設置步長,我們可以更加有針對性地獲取元組中的值。

元組的連接和複製

操作符可以被用來連接或者複製元組。連接是通過『+』來完成,複製是『*』來完成。

『+』可以將兩個或者多個元組連接在一起。我們可以把兩個元組中的值合併得到一個新的元組。

簡介Python3中的元組

輸出結果為:

簡介Python3中的元組

因為『+』操作符可以用來連接,所以可以被用來將多個元組合併成一個新的元組,儘管如此,我們還是不能改變某一個已存在的元組。

『*』操作符可以用來複制元組,也許你需要將某一目錄下的文件全部拷貝到伺服器上,或者你想和朋友分享一下播放列表,在這些情況下,你需要複製數據的集合。

讓我們把coral元組乘以2,kelp元組乘以3,來創建新的元組。

簡介Python3中的元組

簡介Python3中的元組

通過『*』操作符,我們可以將元組複製指定的次數,通過原有的數據序列去製造新的元組。

現有的元組可以通過『+』或者『*』來進行連接或者複製操作。

元組的函數

你可以使用一些內建函數來操作元組。

len

類似於字元串和列表,我們可以通過len函數計算元組的長度,把元組作為參數傳遞進去:

簡介Python3中的元組

當你想得到不同集合長度的最大或最小值時,這個函數非常有用。

當對kelp元組和numbers使用len函數時,我們會得到如下輸出:

簡介Python3中的元組

我們得到上述輸出是因為kelp有四個元素,numbers有13個元素:

簡介Python3中的元組

上述實例中元組的長度比較小,當元組較長時len可以得到元素的具體數量。

max和min

當我們處理數值型的元組時(包括整數和浮點數),我們可以使用max和min函數去找到某一特定元組中的最大值和最小值。

這兩個函數讓我們能夠得到定量數據的相關信息,如考試成績,溫度,價格等。

看一下由浮點數組成的元組:

簡介Python3中的元組

為了使用max函數,需要把元組傳遞進函數,max(more_numbers)。

max函數能夠得到元組中的最大值。

同樣地,我們也可以使用min函數得到最小值。

簡介Python3中的元組

如此我們就能找到並列印出元組中的最小值。

和len函數一樣,當元組中的數據項較多時,max和min是很有用的。

元組和列表的不同之處

元組和列表的首要不同之處就是元組中的值不可修改的。這意味著不能在元組中添加或者刪除值,某一數據項的值也不能修改。

不過,我們可以通過『+』等操作符來構造新元組。

讓我們再一次操作coral元組,我們想要把數據項『blue coral』替換成『black coral』。如果你試圖像操作列表那樣去操作元組:

簡介Python3中的元組

它會報錯。

這是因為元組的值是不能修改的。

如果構造完一個元組,而後你才發現真正需要的是列表形式,我們可以將其進行轉換。

為了把元組轉換成列表,我們可以使用list函數。

簡介Python3中的元組

現在我們就把元組轉換成用包裹的列表了。

同樣地,你可以使用tuple函數將列錶轉換為元組。

你可以在「在Python3如何轉換數據」學到更多相關知識。

總結

元組是一種有序的數據類型,它不能被修改,因其運行速度比列錶快,所以使用元組的代碼會有一定的優化。當你和其他人共同合作編寫代碼時,使用元組類型意味著你不想自己的數據序列被修改。

這篇導論闡述了元組的基本特性,包括索引,切片和拼接,同時也介紹了針對元組的內建函數。


英文原文:https://www.digitalocean.com/community/tutorials/understanding-tuples-in-python-3
譯者:崔子橙

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 Python部落 的精彩文章:

PacVim:一個用於學習Vim的命令行遊戲

TAG:Python部落 |