python代码,如何理解tuple元组?tuple/list/set异同对比
发布于 作者:苏南大叔 来源:程序如此灵动~

结合最近的博客内容,来学习一下python
中的元组tuple
类型。typle
类型和list
类型非常类似,但是元组一旦被定义,就不可以被修改,不可以被排序。当然,如果非要修改的话,转化为list
,再转为tuple
吧。

大家好,这里是苏南大叔的程序如此灵动博客,这里介绍苏南大叔和计算机代码的故事。本文主要介绍pthon
里面元组的主要使用方式。测试环境:win10
,python@3.6.8
。
基础定义
tuple
元组和list
/set
非常类似,可以相互转化。tuple
元组中就一个元素的时候,需要在后面添加逗号,否则会认为普通的括号运算符。tuple
元组中可以包含list
或者set
。虽然tuple
不可修改,但是list
可以修改。

单元素对比
对于单元素的情况,tuple
是很奇怪的,必须添加一个额外的逗号。所以,
tuple
对比,(1)
不等于(1,)
。list
对比,[1]
等于[1,]
。set
对比,{1}
等于{1,}
。tuple
对比,(1,2)
等于(1,2,)
可简化的定义
测试代码:
输出:
对于上面的a2
和a3
定义,只写了逗号,没有写元组标志性的()
,依然被识别为元组tuple
类型。
可以执行的操作
根据前面的两篇文章,苏南大叔可以知道:
可以使用dir()
函数列出变量所有可用的操作,还可以使用差集操作得到特有的函数方法。
那么,就看看tuple
类型和list
类型、set
类型的可操作类型差别把。
结论1:tuple
不能修改,不能排序。
tuple
比list
,特有的操作是:{'__getnewargs__'}
。list
比tuple
,特有的操作是:{'insert', 'copy', 'append', 'remove', 'extend', 'pop', '__iadd__', 'sort', '__setitem__', 'clear', 'reverse', '__imul__', '__delitem__', '__reversed__'}
。
结论2:tuple
不能做集合运算。
tuple
比set
,特有的操作是:{'__add__', 'count', '__getitem__', '__mul__', '__rmul__', '__getnewargs__', 'index'}
。set
比tuple
,特有的操作是:{'update', 'copy', '__ior__', 'difference', '__or__', 'intersection', '__isub__', 'intersection_update', 'discard', '__rsub__', 'issuperset', '__and__', '__sub__', '__xor__', 'union', 'isdisjoint', '__iand__', 'difference_update', 'add', '__ror__', 'remove', '__rand__', '__ixor__', '__rxor__', 'pop', 'symmetric_difference', 'issubset', 'symmetric_difference_update', 'clear'}
。
但是,这个结论也就是个表象的结论。因为tuple
和set
、list
之间可以相互转化,如果不能修改不能排序,或者是不能做集合计算的话。这并不是特别大的问题,做个类型转化即可。您说是不是?
类型 | 名称 | 定义 | 可重复性 | 有序性 | 只读性 | 添加新元素 |
---|---|---|---|---|---|---|
set | 可变集合 | {1} | 天然去重 | 无序 | 可修改 | add() |
list | 列表/数组 | [1] | 可重复 | 有序 | 可修改 | append() |
tuple | 元组 | (1,) | 可重复 | 有序 | 只读 | --- |
相关链接
- https://newsn.net/say/python-def.html
- https://newsn.net/say/python-dir.html
- https://newsn.net/say/python-set-diff.html
结论
在介绍python
中的函数定义方式的时候,曾经提到过*args,**kwargs
的概念,其中的*args
就是个tuple
,而**kwargs
是个list
。更多python
结论文章,请点击下面的链接:


