看到有同窗很執着的用 tuple
,想起本身剛學 python
時,也是很喜歡 tuple
,爲啥?由於之前歷來沒見過這種樣子的數據 (1,2)
, 感受很特別,用起來也挺好用 i,j=(1,2)
, 一會兒就獲得兩個變量了;html
並且若是函數返回值超過 1 個的話, 用 tuple
挺好,直接就返回了,解析起來也方便。python
但 tuple
爲啥這麼好?是真的這麼好嗎?真的這麼好,爲啥好比 json
什麼的不多用 tuple
呢?沒有細想過。json
因此就挺想搞明白,爲啥設計了 tuple
,應該怎麼用?函數
去官網查,找到why are there separate tuple and list data types,有點感受了。設計
大體寫一下理解:code
tuple
和 list
很類似,但基本的用處仍是不同的。htm
tuple
的設計相似於 Pascal records 或 C structs(這兩個都不熟悉。。。);get
它是啥?博客
一個比較典型的應用是,笛卡爾座標系,(x,y,z)
表示一個物體的座標。看起來是挺直觀的,比 list
,dict
都直觀。hash
還有一點, tuple
是 immutable
類型,就是說,一旦定義了 tuple
, 它裏面的數據就不能更改了。好比:
>>> a = (1,2) >>> a[0]=3 Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: 'tuple' object does not support item assignment >>> a[0] 1
我定義了一個 tuple
a, 我想更改它的第一個值,可是報錯了 'tuple' object does not support item assignment
, 這個錯其實就是提示了, a
裏面的值是不能更改了。
若是你想更改,那不如改成定義一個 list
, 這個 list
就是 mutable
的,便可以任意更改裏面的值,這個你們基本都熟悉經常使用的了。
tuple
用起來比較爽的地方有幾個,依我本身的感受:
tuple
就是將幾個相關的組合起來表明某個事/物
>>> i , j = (1, 2) >>> i 1 >>> j 2
list
, 但也能夠用 tuple
, 解析的時候就有了上面那條的便利。tuple
是 immutable
的,因此能夠當作 字典(dict)的 key
來用,由於 字典的 key
是用到 hashtable
實現的, 是不能(該)變更的。那不太建議用 tuple
的地方感受就比較重要了:
tuple
定義後,裏面的值是不能改的,這個就很不方便了tuple
裏面的元素之間沒有什麼關聯的話,用起來也缺失了實際設計的本質