Python元组(tuple)

《Python元组(tuple)》

简介

元组(tuple)也是Python中标准数据类型之一, 它与列表非常相似。主要的区别是:

  • 元组使用()包含元素,可以是不同类型的数据;
  • 元组是不可更改的类型,这与字符串很像,因此可以存储一些重要的数据。

元组的定义

创建元组的方式也有两种:

直接创建:

调用tuple()函数:

访问元组中的值

元组也可以通过切片工具获取其中的值:

需要注意的是,当元组中只有一个元素时,需要加一个逗号在后面,才表示是元组类型:

元组中的元素是不可更改的,因此不能通过赋值来改变。

元组运算

元组运算 描述
len(tuple) 返回元组的长度
max(tuple) 返回元组中元素的最大值
min(tuple) 返回元组中元素的最小值
tuple1+tuple2 元组元素相加
tuple1*3 元组元素相乘
x in tuple 判断元素是否在元组中

元组不可变性及特例

我们反复强调了3种不可变的标准类型(数字,字符串和元组)。在这当中,元组的不可变性更具有意义。作为容量类型之一,元组可以存储不同的数据类型。以元组类型存储的数据可以防止别人随意篡改,因此常常用来保存比较重要的、不需要经常修改的数据。

但是元组真的不能修改吗,这里就有特例:

可以很清楚的看到元组a中列表元素[1, 2]中的值通过赋值改变了,整体上“改变”了元组,并且内存空间的地址没有发生变化。总结一下,当元组中存在可变的数据类型时,此时元组是可变的。

元组方法

元组的操作比列表少的多,凡是试图修改元组中元素的方法都不能用:

函数 描述
tuple.count() 统计某个元素在元组中出现的次数
tuple.index() 从元组中找出某个值第一个匹配项的索引位置

代码演示:

复制元组

通过赋值建立变量引用:

通过切片操作:

需要注意的是,通过切片操作复制列表的时候,在内存空间中新建了地址,但是在元组中并没有新建地址。可以这样理解,因为元组的不可变性,相应的函数操作就很少,没必要搞得那么花里胡哨,只用同一个地址就可以。而列表操作性太强,通过新建内存地址能够给予其更多的操作空间。

点赞