重新认识元组

2024-04-11 11:44
文章标签 元组 重新认识

本文主要是介绍重新认识元组,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

元组的一些小的应用

  • 元组
    • 元组的应用场景少的可怜吗?
      • 应用
        • 位置不变
        • 位置变化
        • 注意事项
        • tuple 性能

元组

元组也就是python里的tuple,我相信很多人和我一样,就是在刚开始学习python的时候,仅仅只是把元组当作一个不可变列表,一个不可改变的列表,牺牲了自由度,在很多的场景中并不适用,故而一般很少用到元组。

元组的应用场景少的可怜吗?

我想很多人都会和我一样,回答:yes

应用

位置不变

当然是记录一些常量,记录这些东西的时候,我们一般不在意数值在元组中的位置。

version = ("v1", "v2")
位置变化

假设我们对元组中的数值位置,非常在意呢,因为这可能会影响到我们业务,例如我们得到一行数据:

name,age,sex = ("宇宙无敌暴龙战士", 13, "man")print("%s/%d/%s" % ("宇宙无敌暴龙战士", 13, "man"))

通过name 我们可以得到用户的名字,这样的做法,好像list也能做(同数据类型情况下🤭),为什么非得用tuple?

首先,作为不可变的数组,元组非常适合用来存这种查询出来固定的数据,注意我后面加的print函数,这是我认为在实际体验中tuple优于list的原因, % 格式化运算符理解元组结构,把每一项当作不同的字段,特别适合一些日志记录。

上述的用法,利用的是tuple ==拆包(unpacking)==的特性,我们现在不深入拆包的原理,单单使用tuple这一特性,除了上述用法,我们还能干嘛?

name, *middle, sex = ("宇宙无敌暴龙战士", 13, "man")print(name, sex)

像上面这种用法,我们在日常开发中应该有不少用到的地方,这也是拆包带来的用法。

super_man = [("uzi", 18), ("pdd", 23), ("那个男人", 22), ("maya", 21)]for name, _ in super_man:print(name)

这也是一种拆包🐕。

而我们常常看到Python 解释器和标准库经常把元组当作不可变列表使用,这么做主要有两个好处。意图清晰,只要在源码中见到元组,你就知道它的长度永不可变(这是一种隐形的好处)。性能优越,长度相同的元组和列表,元组占用的内存更少,而且 Python 可对元组做些优化。

注意事项

不要在元组里放可变的项,比如list

record = ("宇宙无敌暴龙战士", 13, "man", [1,2,3,4])
tuple 性能

这是stack overflow中关于tuple 性能的高赞回答,个人觉得,直接引用是tuple明显优于list的一点,相比之下list把引用数组存储在别处,因为列表可能会变长,一旦超出分配空间,就需要重新分配引用数组来腾出空间,相反tuple是固定的,你永远可以在tuple的数组中直接找到引用。

在这里插入图片描述

tuple性能优于list的链接

这篇关于重新认识元组的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/893979

相关文章

erlang学习:用ETS和DETS存储数据3,保存元组到磁盘

学习内容 ETS表把元组保存在内存里,而DETS提供了把Erlang元组保存到磁盘上的方法。DETS的最大文件大小是2GB。DETS文件必须先打开才能使用,用完后还应该正确关闭。如果没有正确关闭,它们就会在下次打开时自动进行修复。因为修复可能会花很长一段时间,所以先正确关闭它们再结束程序是很重要的。 DETS表有着和ETS表不同的共享属性。DETS表在打开时必须赋予一个全局名称。如果两个或更多

Python 元组详解

Python 元组: Python的元组与列表类似,不同之处在于元组的元素不能修改。 元组使用小括号,列表使用方括号。 元组创建很简单,只需要在括号中添加元素,并使用逗号隔开即可。 如下实例: tup1 = ('physics', 'chemistry', 1997, 2000);tup2 = (1, 2, 3, 4, 5 );tup3 = "a", "b", "c", "d";#

python关于序列中的列表和元组总结

序列:序列是一种数据结构,它包含的元素都进行了编号(从0开始)。典型的序列包括列表、字符串和元组。其中、列表是可变的(可以进行修改),而元组和字符串是不可以改变的(一旦创建了就是固定的)。通过分片操作可以访问序列的一部分,其中分片需要连个索引号来指定出分片的起始和结束位置。想要改变列表,则要对相应的位置进行赋值操作,或者说使用赋值语句重写整个分片。 **成员资格:**in操作可以检查一个值时候存

Day 7:1726 同积元组

1726 同积元组 1. 题目描述2. 解题思路3. 代码实现 1. 题目描述 1726 同积元组 2. 解题思路 假设存在 n 组数,对于其中任意两组数 (a, b) 和(c, d),均满足 a * b = c * d 的条件,则这样的组合一共有 C ( n , 2 ) = n × ( n − 1 ) 2 C(n, 2) = \frac{n \times (n - 1)}

Python中的元组:解锁数据安全与效率的秘密武器

引言 元组,一种有序的数据集合,它允许我们存储多个项作为一个单一的实体。与列表相比,元组最显著的特点就是其不可变性——一旦创建,就不能修改。这一特性使得元组非常适合用于那些需要固定不变的数据集合场景,如配置信息、日期时间等。此外,由于元组的不可变性,Python能够在内存管理上做出更优化的决策,从而提高程序执行效率。 基础语法介绍 在Python中定义一个元组非常简单,只需要将元素放在圆括号

一篇搞懂C++ STL 元组std::tuple

文章目录 前言什么是 `std::tuple`为什么要使用 `std::tuple``std::tuple` 的构造函数和操作函数1. 构造函数2. 操作函数 make_tuple函数`std::make_tuple` 的功能函数原型参数返回值使用示例`std::make_tuple` 的特点 示例代码总结 前言 在 C++ 中,元组(Tuple)是一种用于将多个不同类型的值

【Python知识宝库】掌握列表与元组,轻松处理数据集合

🎬 鸽芷咕:个人主页  🔥 个人专栏: 《C++干货基地》《粉丝福利》 ⛺️生活的理想,就是为了理想的生活! 引言 在Python编程中,列表(List)和元组(Tuple)是两种非常基础且强大的数据结构。它们用于存储序列数据,可以包含不同类型的元素。理解和熟练使用列表与元组,可以帮助我们更轻松地处理数据集合。本文将深入探讨列表与元组的特性、

这一段时间的收获与感想,重新认识自己

好吧,又过了1个多星期,这一个多星期呢;真的又懂了很多,但我还是有很多很多的东西不懂;这种开心也真的是很开心;这一个多星期,我把JAVA的面向对象的一些特征明白的,只是多态还是有点疑问。生活就是疑问有许许多多的疑问才有思考的动力吧,这一段时间我对于网络编程的简单模型有了更进一步的了解,最近在网上搜索了很多的视频,看了很多收获也很大,最近一直在翘课在搞这些东西,高数课,大物课,反正只要我

Python青少年简明教程:列表(List)、元组(tuple)和字典(dict)

Python青少年简明教程:列表(List)、元组(tuple)和字典(dict) 在Python中,列表(List)、元组(Tuple)和字典(Dict)既是常用的数据类型,也是常用的数据结构。 【数据类型:在编程语言中,数据类型定义了一个变量的存储方式以及可以对该变量执行的操作。从 Python 语言的角度来看,Python 中的列表、元组和字典都属于数据类型。 数据结构:数据结构是

python3 list、tuple(元组)、str之间的相互转换

list()方法是把字符串str或元组转成数组tuple()方法是把字符串str或数组转成元组 >>> s = "xxxxx">>> list(s)['x', 'x', 'x', 'x', 'x']>>> tuple(s)('x', 'x', 'x', 'x', 'x')>>> tuple(list(s))('x', 'x', 'x', 'x', 'x')>>> list(tu