python 的 tuple(元组) 是不是冗余设计?

简介: python 的 tuple(元组) 是不是冗余设计?

tuple与list区别

tuple中文翻译成元组,它和list(列表)像是一对兄弟,两者都是容器,很多用途、方法都一致,主要的区别是list可变,tuple不可变,tuple更轻量。

差异如下:

List Tuple
可变 不可变
迭代更慢 迭代更快
适合执行插入、删除等操作 适合访问操作,如切片、索引
消耗内存更多 消耗内存更少
内置方法相对较多 内置方法相对较少
容易发生数据错误 不易发生数据错误

不可变(Immutable)是什么意思?

就是你不可以修改、增减tuple的值。也因为 tuple 不可变的特性,所以没有append()、remove()、pop()等会更动值的操作。

为什么tuple轻量,占用内存小?

先看如下案例,存放同样的内容,元组的存储空间比列表要少16字节。

主要是因为列表是动态的,需要存储指针,同时需要额外存储已经分配的长度大小,都会占用存储空间。

为什么tuple更快?

因为Python的垃圾回收机制,会回收不用的变量,而对于静态数据则会做资源缓存处理,这样调用元组的时候拿来即用,会加快运行速度。

tuple使用场景

1、作为函数返回容器。

比如返回经纬度,存储的数据不需要变动,这时候使用tuple更准确、也节省内存。

def get_location():
    ......
    return (lon,lat)

2、作为字典的键

我们知道Python字典的键要求不可变,如果你想将容器作为键,非tuple不可。

3、打包解包

打包是把一堆元素放到容器里,解包是把容器里的元素分别赋值给变量。

比如说有这样一个元组t:

>> t = ('foo', 'bar', 'baz', 'qux')

上面就好像元组中的项目已被“打包”到对象中。

你可以通过索引,获取其中的元素。

>>> t
('foo', 'bar', 'baz', 'qux')
>>> t[0]
'foo'
>>> t[-1]
'qux'

如果随后将该“打包”对象分配给新元组,则各个项目将“解包”到元组中的对象中。

演示一下:

>>> (s1, s2, s3, s4) = t
>>> s1
'foo'
>>> s2
'bar'
>>> s3
'baz'
>>> s4
'qux'

其实也可以将打包解包合并成一个语句:

(s1, s2, s3, s4) = ('foo', 'bar', 'baz', 'qux')

tuple常用方法

tuple的内置方法不是很多,毕竟不可变。

综上所述,tuple和list是互补关系,很多场景需要不可变得特性。

相关文章
|
1月前
|
存储 索引 Python
Python学习笔记----列表、元组和字典的基础操作
这篇文章是一份Python学习笔记,涵盖了列表、元组和字典的基础操作,包括它们的创建、修改、删除、内置函数和方法等。
Python学习笔记----列表、元组和字典的基础操作
|
16天前
|
存储 Python
Python 中的列表和元组
【8月更文挑战第29天】
16 1
|
17天前
|
Python
Python多维列表(元组)合并成一维形式
Python多维列表(元组)合并成一维形式
12 2
|
21天前
|
存储 缓存 安全
Python元组之不可变序列的奥秘与应用方式
Python 中的元组(Tuple)是一种有序的、不可变的数据结构,它是序列的一种特殊形式,就像一个固定大小的盒子,一旦放入物品就无法更换或移除。 元组可以包含任何类型的数据,如数字、字符串甚至是其他元组。 相比列表,元组在很多场景下提供了更高效、安全的选择。
|
25天前
|
存储 索引 Python
五:《Python基础语法汇总》— 列表&元组&集合
本篇文章讲解了关于列表;元组和集合这三个基本数据类型的常用方法与函数。及同一性操作符;成员判断符;浅拷贝与深拷贝等多方面的知识点
22 4
|
1月前
|
存储 索引 Python
Python的元组是什么
【8月更文挑战第14天】元组是Python中有序且不可变的数据集合,用于存储多个项目的序列。一旦创建,元组内的元素不能被修改、添加或删除,确保了数据的安全性和可靠性。元组使用圆括号定义,元素间以逗号分隔。
21 5
|
1月前
|
存储 数据库 C++
"深入剖析Python元组(tuple):与列表的对比、特性解析及高效应用场景展示"
【8月更文挑战第9天】Python元组与列表虽均用于存储元素集合,但有本质差异。元组不可变,创建后无法修改,适合保护数据不被意外更改的场景,如作字典键或传递固定值。列表则可变,支持动态增删改,适用于需频繁调整的数据集。元组因不可变性而在性能上有优势,可用于快速查找。两者各有千秋,根据具体需求选择使用。例如,元组可用于表示坐标点或日期,而列表更适合管理用户列表或库存。
35 1
|
22天前
|
索引 Python
Python 中的元组
【8月更文挑战第23天】
23 0
|
23天前
|
测试技术 索引 Python
Python接口自动化测试框架(基础篇)-- 常用数据类型tuple
Python中tuple(元组)的数据结构,包括元组的创建、访问、修改,以及元组支持的运算符和内置函数,还探讨了元组的特性如不可变性和特殊用法,最后扩展介绍了命名元组的概念和使用。
15 0
|
24天前
|
存储 安全 Java
Python Tuples(元组)详解
Python Tuples(元组)是类似于列表的一种集合,元组中存储的值可以是任何类型,并且它们通过整数索引。这篇文章,我们将深入地分析 Python Tuples(元组)。