Python | 5分钟搞定 Python3 元组
簡介
Python3 中元組表現為如下形式:
元組(tuple)是一種靜態的(immutable)或者說是不可變(unchangeable)的數據結構,里面的元素按照一定的順序排列。它是靜態的,所以元組里的元素不能被修改。
元組用于給數據分組。元組中的每一個元素稱之為“項”(item)。
元組中的值被包裝在括號中,并用逗號分隔,空元組可以寫成coral=(),不過只有一項元素的元組必須使用逗號:coral = (“blue coral”,)。
如果使用print()函數打印元組,會得到如下的輸出,其中元組依然‘()’用括號包裹。
當你試圖理解Python中的元組或者其他集合類型的數據結構時,去想一下電腦中存在的不同集合是有幫助的:不同類型文件的排列,你的歌曲清單,瀏覽器中的書簽,你的郵箱,你在流媒體上獲得的視頻集合等等。
元組和列表很像,不過元組中的值是不可修改的。也正因為如此,當你在代碼中使用元組時,就意味著告訴他人你不想集合中的數據被修改。同時,因為元組中的值不可變,因此相比于使用列表,你的代碼能通過使用元組得到優化。
元組的索引
作為一個有序的元素集合,元組中的任一項都可以通過索引被單獨訪問。
每一項都與一個索引號相關聯,它是一個整數值,從0開始計數。
對于coral元組,它的索引如下所示:
元組中的第一項,字符串“blue coral”的索引是0,元組的最后一個元素是“elkhorn coral”,索引號是3。
因為元組中的每一項都有一個對應的索引號,因此我們可以單獨地訪問每一個元素。
現在我們通過索引號單獨訪問某個元素:
如上表所示,索引號的范圍是0~3,所以我們可以通過索引號去訪問其中的每個元素:
如果我們訪問此元組時使用一個超過3的索引號,它會提示說索引號越界。
索引號除了可以是正數,還可以是負數形式,它是從后往前倒著數地,從-1開始。
當我們去具體訪問一個長元組的最后幾項時,負數形式的索引號很有效。
還是針對coral元組,它的負數形式的索引號如下:
所以如果你想通過負數形式的索引打印出“blue coral”這一項,可以寫成如下形式:
我們還可以通過‘+’操作符來將元組中的字符串值和另一個字符串連接:
我們把索引號為1的元素的值和字符串“This reef is made up of”組合在一起。我們也可以使用‘+’來連接兩個或者多個元組。
元組中的每一項都有對應的索引號,我們可以很容易地去訪問元組中的每一個元素。
元組的切片
我們使用索引號去訪問元組中的某一項。切片(slice)通過構造一個索引號的范圍[x:y]可以同時獲得元組中的多個值。
假設我們想獲取coral元組中間的值,可以用如下方式構造一個切片。
當我們在構造[1:3]這個切片時,第一個表示切片開始的地方(包含此索引號),第二個數表示切片結束的地方(不包括此索引號),因此[1:3]能夠取出索引號為1和2的元素。
如果你想得到除了端點元素的剩余所有元素,你可以在[x:y]中忽略某一項。
如你想打印出coral元組中的前三個元素,你可以寫成如下形式:
這就打印出元組中前面部分的信息,在索引號為3的元素之前停止。
為了打印出元組后面部分的信息,可以忽略掉[x:y]中y的值:
我們也可以使用負數形式的索引號構造切片來訪問元組:
切片中的最后一個變量是步長(stride),它是指當我們取出前一項時,移動多少個元素去取下一個值。
前面的幾個例子,我們都忽略了這一變量,使用默認值1。因此我們能夠取得兩個索引號中間的所有元素。
完整的切片構造方式[x:y:z],z是指步長。我們來構造一個長一點的元組,通過步長為2的切片去訪問它:
我們構造的切片[1:11:2]打印出從索引號為1(包括此索引號),到索引號為11(不包括此索引號)的值,步長為2告訴我們隔一項打印一個。
我們可以忽略切片中的前兩項,只使用步長變量:
通過把切片中的步長設置為3,每個索引號能夠被3整除的元素打印出來:
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12
通過使用正數或者負數形式的切片,并設置步長,我們可以更加有針對性地獲取元組中的值。
元組的連接和復制
操作符可以被用來連接或者復制元組。連接是通過‘+’來完成,復制是‘*’來完成。
‘+’可以將兩個或者多個元組連接在一起。我們可以把兩個元組中的值合并得到一個新的元組。
輸出結果為:
因為‘+’操作符可以用來連接,所以可以被用來將多個元組合并成一個新的元組,盡管如此,我們還是不能改變某一個已存在的元組。
‘*’操作符可以用來復制元組,也許你需要將某一目錄下的文件全部拷貝到服務器上,或者你想和朋友分享一下播放列表,在這些情況下,你需要復制數據的集合。
讓我們把coral元組乘以2,kelp元組乘以3,來創建新的元組。
通過‘*’操作符,我們可以將元組復制指定的次數,通過原有的數據序列去制造新的元組。
現有的元組可以通過‘+’或者‘*’來進行連接或者復制操作。
元組的函數
你可以使用一些內建函數來操作元組。
len()
類似于字符串和列表,我們可以通過len()函數計算元組的長度,把元組作為參數傳遞進去:
當你想得到不同集合長度的最大或最小值時,這個函數非常有用。
當對kelp元組和numbers使用len函數時,我們會得到如下輸出:
我們得到上述輸出是因為kelp有四個元素,numbers有13個元素:
上述實例中元組的長度比較小,當元組較長時len()可以得到元素的具體數量。
max()和min()
當我們處理數值型的元組時(包括整數和浮點數),我們可以使用max()和min()函數去找到某一特定元組中的最大值和最小值。
這兩個函數讓我們能夠得到定量數據的相關信息,如考試成績,溫度,價格等。
看一下由浮點數組成的元組:
為了使用max()函數,需要把元組傳遞進函數,max(more_numbers)。
max()函數能夠得到元組中的最大值。
同樣地,我們也可以使用min()函數得到最小值。
如此我們就能找到并打印出元組中的最小值。
和len()函數一樣,當元組中的數據項較多時,max()和min()是很有用的。
元組和列表的不同之處
元組和列表的首要不同之處就是元組中的值不可修改的。這意味著不能在元組中添加或者刪除值,某一數據項的值也不能修改。
不過,我們可以通過‘+’等操作符來構造新元組。
讓我們再一次操作coral元組,我們想要把數據項‘blue coral’替換成‘black coral’。如果你試圖像操作列表那樣去操作元組:
它會報錯。
這是因為元組的值是不能修改的。
如果構造完一個元組,而后你才發現真正需要的是列表形式,我們可以將其進行轉換。
為了把元組轉換成列表,我們可以使用list()函數。
現在我們就把元組轉換成用[]包裹的列表了。
同樣地,你可以使用tuple()函數將列表轉換為元組。
你可以在“在Python3如何轉換數據”學到更多相關知識。
總結
元組是一種有序的數據類型,它不能被修改,因其運行速度比列表快,所以使用元組的代碼會有一定的優化。當你和其他人共同合作編寫代碼時,使用元組類型意味著你不想自己的數據序列被修改。
這篇導論闡述了元組的基本特性,包括索引,切片和拼接,同時也介紹了針對元組的內建函數。
總結
以上是生活随笔為你收集整理的Python | 5分钟搞定 Python3 元组的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 基于requests模块的cookie,
- 下一篇: Python:判定IP地址合法性的三种方