Python|Python - Tuple 怎么用,为什么有 tuple 这种设计()
背景
看到有同学很执着的用 tuple
,想起自己刚学 python
时,也是很喜欢 tuple
,为啥?因为以前从来没见过这种样子的数据 (1,2)
, 感觉很特别,用起来也挺好用 i,j=(1,2)
, 一下子就得到两个变量了;
【Python|Python - Tuple 怎么用,为什么有 tuple 这种设计()】而且如果函数返回值超过 1 个的话, 用 tuple
挺好,直接就返回了,解析起来也方便。
但 tuple
为啥这么好?是真的这么好吗?真的这么好,为啥比如 json
什么的很少用 tuple
呢?没有细想过。
探索
所以就挺想搞明白,为啥设计了 tuple
,应该怎么用?
去官网查,找到 why are there separate tuple and list data types,有点感觉了。
大致写一下理解:
tuple
和 list
很相似,但基本的用处还是不一样的。
tuple
的设计类似于 Pascal records 或 C structs(这两个都不熟悉。。。);
它是啥?
- 一组相关联的数据的集合
- 集合规模 小
- 这些数据可以是不同类型
- 但合起来是一个组合
(x,y,z)
表示一个物体的坐标。看起来是挺直观的,比 list
,dict
都直观。还有一点,
tuple
是 immutable
类型,就是说,一旦定义了 tuple
, 它里面的数据就不能更改了。比如:>>> a = (1,2)
>>> a[0]=3
Traceback (most recent call last):
File "", line 1, in
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
用起来比较爽的地方有几个,依我自己的感觉:- 组合(group)的感觉比较好,正如其设计的,
tuple
就是将几个相关的组合起来代表某个事/物- 我的理解是,这个组合起来的事物,是有某个具体有意义的事物,比如笛卡尔坐标系
- 解析的时候比较方便,比如如下,一行代码就可以获得两个变量了
>>> i , j = (1, 2)
>>> i
1
>>> j
2
- 同样,设计一个函数,需要返回多个变量的时候,可以用
list
, 但也可以用tuple
, 解析的时候就有了上面那条的便利。 - 补充一点,因为
tuple
是immutable
的,所以可以当做 字典(dict)的key
来用,因为 字典的key
是用到hashtable
实现的, 是不能(该)变动的。 - 还有啥?暂时没想到
tuple
的地方感觉就比较重要了:-
tuple
定义后,里面的值是不能改的,这个就很不方便了 - 如果
tuple
里面的元素之间没有什么关联的话,用起来也缺失了实际设计的本质
- why are there separate tuple and list data types
- why must dictionary keys be immutable?
推荐阅读
- “爸爸,你怎么不跟妈妈一起睡了()
- python读取文件|python读取文件 - yaml
- matlab怎么算方差和标准差,matlab用var函数算出的方差和标准差求解释~
- 七种合理吃法,尽享蜂蜜甜滋味
- 不会做读书笔记怎么办(看完这篇文章就懂了(建议收藏))
- 剪映自动卡点怎么制作,剪映自动卡点设置教程
- 遇到一哭二闹三打滚的孩子,怎么办┃山伯教育
- 七年之痒之后
- 开花店的前景怎么样()
- python学习之|python学习之 实现QQ自动发送消息