Python 元组
Python 元组
小嗷犬引言
除了两个方面,元组数据类型几乎与列表数据类型一样。
用圆括号()表示
首先,元组输入时用圆括号()
,而不是用方括号[]
:
1 |
|
不可变
元组与列表的主要区别还在于,元组像字符串一样,是不可变的。元组不能让它们的值被修改、添加或删除:
1 |
|
如果元组中只有一个值,你可以在括号内该值的后面跟上一个逗号,表明这种情况。否则,Python 将认为,你只是在一个普通括号内输入了一个值。逗号告诉 Python,这是一个元组(不像其他编程语言,Python 接受列表或元组中最后表项后面跟的逗号)。
1 |
|
利用你可以用元组告诉所有读代码的人,你不打算改变这个序列的值。如果需要一个永远不会改变的值的序列,就使用元组。使用元组而不是列表的第二个好处在于,因为它们是不可变的,它们的内容不会变化,Python 可以实现一些优化,让使用元组的代码比使用列表的代码更快。
创建元组
在 Python 中,创建列表通常用 tuple 函数或圆括号 ()。
tuple 函数
与list()
函数类似,tuple()
可以将参数中的可迭代对象转换成元组:
1 |
|
圆括号
使用圆括号()
创建列表时,需要在列表中列出所有元素:
1 |
|
直接使用圆括号()
将得到一个空的元组:
1 |
|
多重赋值
在 Python 中, 允许一次给多个变量赋值, 称为多重赋值。 可以使用元组和列表实现多重赋值:
1 |
|
元组特性
在列表操作中, 除了对列表进行原地修改的方法, 其他方法都可以应用在元组中, 例如索引、分片、连接和重复等,与列表不同的是,在元组中使用这些方法,会返回新的元组,而不是列表。
单个元素的元组
如果仅仅使用圆括号把一个值括起来, Python 会认为是表达式, 得到的不会是元组类型,而是值本身的类型:
1 |
|
所以,如果确实希望得到一个包含单个元素的元组,需要在这一单个元素后面加上一个逗号,与表达式区分开来:
1 |
|
可以省略的圆括号
在不引起歧义的情况下,可以省略圆括号:
1 |
|
不可变性
不可变性也是元组和列表最大的区别。 如果试图修改元组的某个元素, 将会触发 TypeError
的异常:
1 |
|
元组的不可变性仅指的是不可以改变元组的顶层元素。如果元组中的元素本身是可变的,Python 允许修改其内容:
1 |
|
为什么需要元组
主要原因如下:
- 元组占用的空间较小
- 你不会意外修改元组的值
- 可以将元组用作字典的键
- 函数的参数是以元组形式传递的