Python 學習之元組

ARM的程式設計師敲著詩歌的夢發表於2019-01-27

元組:不可修改的序列

tuple(讀音是 /tuːpəl/ 或 /tʌpəl/)與列表一樣,元組也是序列,唯一的差別在於元組是不能修改的(你可能注意到了,字串也不能修改)。元組語法很簡單,只要將一些值用逗號分隔,就能自動建立一個元組。

In [34]: 1,2,3
Out[34]: (1, 2, 3)

元組還可用圓括號括起(這也是通常採用的做法)。

In [35]: (1,2,3)
Out[35]: (1, 2, 3)

空元組用兩個不包含任何內容的圓括號表示。

In [36]: ()
Out[36]: ()

如何表示只包含一個值的元組呢?這有點特殊:雖然只有一個值,也必須在它後面加上逗號。

In [38]: 21
Out[38]: 21

In [39]: (21)
Out[39]: 21

In [40]: 21,
Out[40]: (21,)

In [41]: (21,)
Out[41]: (21,)

最後兩個示例建立的元組長度為1,而第一個和第二個示例根本沒有建立元組。

逗號至關重要,僅將值用圓括號括起不管用:(21)與21完全等效。但僅僅加上一個逗號,就能完全改變表示式的值。

In [42]: 3 * (40 + 2)
Out[42]: 126

In [43]: 3 * (40 + 2,)
Out[43]: (42, 42, 42)

函式tuple(與list一樣,tuple實際上也不是函式,而是型別。不過眼下我們不用考慮這些。)的工作原理與list很像:它將一個序列作為引數,並將其轉換為元組 。如果引數已經是元組,就原封不動地返回它。

In [45]: tuple([1,2,3])
Out[45]: (1, 2, 3)

In [46]: tuple("123")
Out[46]: ('1', '2', '3')

In [47]: tuple((1,2,3))
Out[47]: (1, 2, 3)

因為元組不可修改,所以除建立和訪問其元素外,可對元組執行的操作不多。元組的建立及其元素的訪問方式與其他序列相同。

In [48]: x = 1,2,3

In [49]: x
Out[49]: (1, 2, 3)

In [50]: x[1]
Out[50]: 2

In [51]: x[0:2]
Out[51]: (1, 2)

元組的切片也是元組,就像列表的切片也是列表一樣。

為何要熟悉元組呢?原因有以下兩個。

  • 它們用作對映中的鍵(以及集合的成員),而列表不行。
  • 有些內建函式和方法返回元組,這意味著必須跟它們打交道。

參考資料

《Python基礎教程(第三版)》,人民郵電出版社

相關文章