# 每天學點Python之tuple
元組就是一個增加了限制的列表,主要的區別就是元組一旦確定就不能再修改。它們可以通過各自的構造函數相互轉化。
### 優勢
元組與列表非常相似,但它有自己的優勢:
- 元組比列表速度快,同樣遍歷一串數值,元組的速度比類表快
- 創建安全的變量,有些變量不想在創建后被修改
- 元組是可以當作字典的鍵和集合的值的,列表由于是變化的,哈希值不確定而不可以
### 元組的創建
創建一個空的元組有兩種方法:
~~~
t = ()
t = tuple()
~~~
而創建一個包含元素的元組同樣有兩種方法,下面操作結果相同:
~~~
t = ("a", "b", "c")
t = tuple("abc")
~~~
需要注意的是,tuple方法最多只能有一個參數,也就是說不能將元素依次當做參數傳入。它只接受可迭代的對象作為其參數。
> 注:只包含一個元素的元組用()定義時,要加逗號,如`(2,)`
### 元組的截取
元組的截取規則與列表相同,截取后的返回結果也是元組。具體請參看[列表](http://blog.csdn.net/u013291394/article/details/50364856)這一節。
### 元組的增加/刪除
元組不支持增加與刪除操作,會報AttributeError錯誤。
### 元組的查找
元組的查找操作也與列表相同。
### 多元賦值
在列表中忘記提這個特性了,Python支持多對多的賦值方式,左值的括號可以省略,但如果前后數目不等會拋出ValueError的錯誤:
~~~
>>> (x,y,z)=[2,3,4]
>>> x
2
>>> y
3
>>> z
4
>>> (x,y,z)=(2,3,4)
>>> x
2
>>> y
3
>>> x,y=(2,3,4)
Traceback (most recent call last):
File "<input>", line 1, in <module>
ValueError: too many values to unpack (expected 2)
~~~