python學習10.06:Python tuple元組詳解

元組是 Python 中另外一個重要的序列結構,和列表相似,也是由一系列按特定順序排序的元素組成。和列表不一樣的是,列表能夠任意操做元素,是可變序列;而元組是不可變序列,即元組中的元素不能夠單獨修改。html

元組能夠看作是不可變的列表。一般狀況下,元組用於保存不可修改的內容。python


從形式上看,元組的全部元素都放在一對小括號「()」中,相鄰元素之間用逗號「,」分隔,以下所示:函數

(element1, element2, ... , elementN)

其中 element1~elementN 表示元組中的各個元素,個數沒有限制,且只要是 Python 支持的數據類型就能夠。

從存儲內容上看,元組能夠存儲整數、實數、字符串、列表、元組等任何類型的數據,與列表(list)相同,在同一個元組中,元素的類型能夠不一樣,例如:spa

("c.biancheng.net",1,[2,'a'],("abc",3.0))

在這個元組中,有多種類型的數據,包括整形、字符串、列表、元組。

另外,咱們都知道,列表的數據類型是 list,那麼元組的數據類型是什麼呢?經過 type() 函數,就能夠查看到元組的數據類型,例如:.net

>>> type(("c.biancheng.net",1,[2,'a'],("abc",3.0)))
<class 'tuple'>

能夠看到,元組是 tuple類型,這也是不少教程中用 tuple 指代元組的緣由。code

Python建立元組

Python 提供了多種建立元組的方法,下面一一進行介紹。htm

= 運算符直接建立元組

和其餘類型的 Python 變量同樣,在建立元組時,可使用賦值運算符「=」直接將一個元組賦值給變量,其語法格式以下:對象

tuplename = (element1,element2,...,elementn)排序

其中,tuplename 表示建立的元組名,可使用任何符合 Python 命名規則,且不和 Python 內置函數重名的標識符做爲元組名。教程

再次強調,建立元組的語法和建立列表的語法很是類似,惟一的不一樣在於,建立列表使用的是 [],而建立元組使用的是 ()。

例如,下面定義的元組都是合法的:

num = (7,14,21,28,35)
a_tuple = ("C語言中文網","http://c.biancheng.net")
python = ("Python",19,[1,2],('c',2.0))


在 Python 中,元組一般都是使用一對小括號將全部元素括起來的,但小括號不是必須的,只要將各元素用逗號隔開,Python 就會將其視爲元組,舉個例子:

a_tuple = "C語言中文網","http://c.biancheng.net"
print(a_tuple)

運行結果爲:

('C語言中文網', 'http://c.biancheng.net')


須要額外注意的一點是,當建立的元組中只有一個元素時,此元組後面必需要加一個逗號「,」,不然 Python 解釋器會將其誤認爲字符串。例如:

# 建立元組 a_typle
a_tuple =("C語言中文網",)
print(type(a_tuple))
print(a_tuple)

# 建立字符串 a
a = ("C語言中文網")
print(type(a))
print(a)

運行結果爲:

<class 'tuple'>
('C語言中文網',)
<class 'str'>
C語言中文網

顯然,前者 a_tuple 纔是元組類型,而變量 a 只是一個字符串。

 

使用tuple()函數建立元組

除了第一種最多見的建立方式外,Python還提供了 tuple() 函數來建立元組,它能夠直接將列表、區間(range)等對象轉換成元組。

tuple 函數的語法格式以下:

tuple(data)

其中,data 表示能夠轉化爲元組的數據,其類型能夠是字符串、元組、range 對象等。

例如以下代碼:

# 將列表轉換成元組
a_list = ['crazyit', 20, -1.2]
a_tuple = tuple(a_list)
print(a_tuple)

# 使用range()函數建立區間(range)對象
a_range = range(1, 5)
print(a_range)
# 將區間轉換成元組
b_tuple = tuple(a_range)
print(b_tuple)
# 建立區間時還指定步長
c_tuple = tuple(range(4, 20, 3))
print(c_tuple)

運行結果爲:

('crazyit', 20, -1.2)
range(1, 5)
(1, 2, 3, 4)
(4, 7, 10, 13, 16, 19)

Python訪問元組元素

和列表徹底同樣,若是想訪問元組中的指定元素,可使用元組中各元素的索引值獲取(使用「[]」進行索引),例如,定義一個包含 3 個元素的元組,若想訪問第 2 個元素,可使用以下的代碼:

a_tuple = ('crazyit', 20, -1.2)
print(a_tuple[1])

運行結果爲:

20


在此基礎上,元組也支持採用切片方式獲取指定範圍內的元素,例如,訪問 a_tuple 元組中前 2 個元組,能夠執行以下代碼:

a_tuple = ('crazyit', 20, -1.2)
#採用切片方式
print(a_tuple[:2])

運行結果爲:

('crazyit', 20)

有關切片的語法格式以及用法,已在《Python序列》一節中作了詳細介紹。

Python修改元組元素

前面已經講過,元組是不可變序列,元組中的元素不能夠單獨進行修改。可是,元組也不是徹底不能修改。(元組自己的元素不能改變,可是能夠對操做元組的變量進行從新賦值,讓變量指向新的元組

好比,咱們能夠對元組進行從新賦值:

a_tuple = ('crazyit', 20, -1.2)
print(a_tuple)
# 對元組進行從新賦值
a_tuple = ('c.biancheng.net',"C語言中文網")
print(a_tuple)

運行結果爲:

('crazyit', 20, -1.2)
('c.biancheng.net', 'C語言中文網')

另外,還能夠經過鏈接多個元組的方式向元組中添加新元素。例如:

a_tuple = ('crazyit', 20, -1.2)
print(a_tuple)
# 鏈接多個元組
a_tuple = a_tuple + ('c.biancheng.net',)
print(a_tuple)

運行結果爲:

('crazyit', 20, -1.2)
('crazyit', 20, -1.2, 'c.biancheng.net')

須要注意的是,在使用此方式時,元組鏈接的內容必須都是元組,不能將元組和字符串或列表進行鏈接,不然或拋出 TypeError 錯誤。例如:

a_tuple = ('crazyit', 20, -1.2)
# 元組鏈接字符串
a_tuple = a_tuple + 'c.biancheng.net'
print(a_tuple)

運行結果爲:

Traceback (most recent call last):
  File "C:\Users\mengma\Desktop\1.py", line 4, in <module>
    a_tuple = a_tuple + 'c.biancheng.net'
TypeError: can only concatenate tuple (not "str") to tuple

Python刪除元組

當已經建立的元組肯定再也不使用時,可使用 del 語句將其刪除,例如:

a_tuple = ('crazyit', 20, -1.2)
print(a_tuple)
# 刪除a_tuple元組
del(a_tuple)
print(a_tuple)

運行結果爲:

('crazyit', 20, -1.2)
Traceback (most recent call last):
  File "C:\Users\mengma\Desktop\1.py", line 4, in <module>
    print(a_tuple)
NameError: name 'a_tuple' is not defined

前面已經介紹過,在實際開發中,del() 語句並不經常使用,由於 Python 自帶的垃圾回收機制會自動銷燬不用的元組。

相關文章
相關標籤/搜索