看到有同窗很执着的用 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
里面的元素之间没有什么关联的话,用起来也缺失了实际设计的本质