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是互补关系,很多场景需要不可变得特性。

目录
相关文章
|
5月前
|
存储 索引 Python
python tuple的所有基础知识
python tuple的所有基础知识
654 0
|
3月前
|
存储 Java 索引
(Python基础)新时代语言!一起学习Python吧!(二):字符编码由来;Python字符串、字符串格式化;list集合和tuple元组区别
字符编码 我们要清楚,计算机最开始的表达都是由二进制而来 我们要想通过二进制来表示我们熟知的字符看看以下的变化 例如: 1 的二进制编码为 0000 0001 我们通过A这个字符,让其在计算机内部存储(现如今,A 字符在地址通常表示为65) 现在拿A举例: 在计算机内部 A字符,它本身表示为 65这个数,在计算机底层会转为二进制码 也意味着A字符在底层表示为 1000001 通过这样的字符表示进行转换,逐步发展为拥有127个字符的编码存储到计算机中,这个编码表也被称为ASCII编码。 但随时代变迁,ASCII编码逐渐暴露短板,全球有上百种语言,光是ASCII编码并不能够满足需求
204 4
|
7月前
|
人工智能 前端开发 数据处理
如何将Python元组转换为列表
本文介绍了在Python中将元组转换为列表的方法。通过内置的`list()`函数,可以轻松地将一个元组转换为列表。此外,文章还提供了如何使用列表推导式和`itertools.chain()`方法将包含多个元组的列表展平为单一列表的示例。这些方法对于数据处理和转换非常实用,能够帮助开发者高效操作序列类型数据。文中附有代码实例及输出结果,便于理解与实践。
198 0
|
10月前
|
存储 人工智能 索引
Python数据结构:列表、元组、字典、集合
Python 中的列表、元组、字典和集合是常用数据结构。列表(List)是有序可变集合,支持增删改查操作;元组(Tuple)与列表类似但不可变,适合存储固定数据;字典(Dictionary)以键值对形式存储,无序可变,便于快速查找和修改;集合(Set)为无序不重复集合,支持高效集合运算如并集、交集等。根据需求选择合适的数据结构,可提升代码效率与可读性。
|
11月前
|
安全 数据处理 索引
深入探讨 Python 列表与元组:操作技巧、性能特性与适用场景
Python 列表和元组是两种强大且常用的数据结构,各自具有独特的特性和适用场景。通过对它们的深入理解和熟练应用,可以显著提高编程效率和代码质量。无论是在数据处理、函数参数传递还是多线程环境中,合理选择和使用列表与元组都能够使得代码更加简洁、高效和安全。
352 9
WK
|
Python
python元组与列表的转换
在 Python 中,元组(tuple)和列表(list)是两种常用的数据结构,它们之间可以相互转换
WK
514 9
WK
|
Python
Python创建元组
必须在这个元素后面加上一个逗号,否则 Python 会把它当作一个普通的带圆括号的表达式而不是元组
WK
282 4
WK
|
数据处理 Python
Python空元组作用有哪些
空元组在Python中可能不像包含元素的元组那样直接用于数据处理,但它们仍然可以在多种情境下发挥重要作用
WK
220 2
|
存储 缓存 Python
解密 Python 元组的实现原理
解密 Python 元组的实现原理
309 4
|
Python
Python中的tuple:探索其强大功能与实用技巧
Python中的tuple:探索其强大功能与实用技巧
592 1

推荐镜像

更多