Python學習: tuple類型詳解

注意:由於Python2將不再更新,爲了避免大家混淆,以下的代碼語法及特性都是基於Python3。

  今天來聊聊Python的tuple(元組)類型,如果用一句話概括,那tuple類型就是“只讀”的list,因爲它有list類型大部分方法和特性。那你可能要問,爲什麼還要有tuple類型?原因就是正因爲它的“只讀”特性,在操作速度和安全性上會比list更快更好。
1.元組創建及取值(注意:任意無符號的對象,以逗號隔開即創建爲元組)

>>> tuple1=(1, 2, 'three', 5.1, ['six', 7])    #( )可以有,也可以沒有
>>> print(tuple1)
(1, 2, 'three', 5.1, ['six', 7])
>>> tuple1[2]                   #取下標索引爲2的值
'three'
>>> tuple1[2:]                 #取下標索引爲2及以後的所有值
('three', 5.1, ['six', 7])
>>> tuple1[3:5]                #取下標索引爲3到5的值
(5.1, ['six', 7])

>>> tuple2=()           #創建空元組必須有()
>>> type(tuple2)
<class 'tuple'>
>>> 

#當元組只有一個元素
>>> tuple3 = ('one')          #不加逗號爲原類型
>>> type(tuple3)
<class 'str'>
>>> tuple3 = ('one',)           #加逗號爲tuple類型
>>> type(tuple3)
<class 'tuple'>

#可以一次賦多值
>>> (x, y, z)=(1, 2, 3)
>>> print (x, y, z)
1 2 3

2.元組的修改與刪除(注意:元組的元素是不能修改和刪除的)

# 創建兩個元組
>>> tuple5 = 1, 2
>>> tuple6 = (3, 5, 'seven')

>>> tuple6[1] = 50                     #當試圖修改元組元素時,會提示錯誤
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'tuple' object does not support item assignment
>>> tuple7 = tuple5 + tuple6[2:]        #但我們可以拼接組成新元組
>>> print(tuple7)
(1, 2, 'seven')

#刪除元組
>>> print(tuple6)           #打印出tuple6元素
(3, 5, 'seven')
>>> del tuple6              #刪除元組
>>> print(tuple6)         #再次打印,報錯提示未定義
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'tuple6' is not defined

3.tuple的內置函數與方法

#元組中的函數
>>> tuple8 = (1, 2, 3, 4, 5)             #創建元組
>>> len(tuple8)                  #返回元組元素個數
5
>>> min(tuple8)                 #返回元組中最小元素
1
>>> max(tuple8)                #返回元組中最大元素
5
>>> list8 = [1, 2, 3, 4, 5]       #創建和元組元素一樣的list
>>> tuple8 == list8               #直接比較tuple8和list8,返回False
False
>>> tuple8 == tuple(list8)     #將list8用tuple函數轉換後再比較,返回True
True

#元組中的方法
>>> tuple8.count(5)          #返回元素5在元組中出現的次數
1
>>> tuple8.index(3)          #返回元素3在元組中的索引值
2

4.tuple和list對比

  • tuple創建用小括號,list創建用方括號;
  • tuple不能增加、修改、刪除元素,但list可以;
  • tuple操作速度比list快;
  • tuple可以轉換爲list,list也可以轉換爲tuple;
  • tuple和list都可以一次賦多值。

5.總結
  通過學習元組的特性,除了操作速度快,在一些場景中,因爲其不可變性本身也提供了完整性。比如使用元組來實現函數的多返回值,作爲參數傳遞給函數調用,或是從函數調用那裏獲得參數時,可以保護其內容不被外部接口所修改。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章