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

news2025/1/26 15:50:29

有人问,python 的 tuple(元组) 是不是冗余设计?因为它和list(列表)很像。

先抛观点,tuple不是冗余设计,它最大的特点是不可变,在Python程序设计中非常重要。

tuple与list区别

tuple中文翻译成元组,它和list(列表)像是一对兄弟,两者都是容器,很多用途、方法都一致,主要的区别是list可变,tuple不可变,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是互补关系,很多场景需要不可变得特性。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1977720.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

药店管理小程序的设计

管理员账户功能包括:系统首页,个人中心,用户管理,药品分类管理,药品信息管理,留言板管理,订单管理,系统管理 微信端账号功能包括:系统首页,药品信息&#xf…

VBA中类的解读及应用第十四讲:限制复选选择,程序运行过程及效果

《VBA中类的解读及应用》教程【10165646】是我推出的第五套教程,目前已经是第一版修订了。这套教程定位于最高级,是学完初级,中级后的教程。 类,是非常抽象的,更具研究的价值。随着我们学习、应用VBA的深入&#xff0…

【Vue3】组件通信之$parent

【Vue3】组件通信之$parent 背景简介开发环境开发步骤及源码总结 背景 随着年龄的增长,很多曾经烂熟于心的技术原理已被岁月摩擦得愈发模糊起来,技术出身的人总是很难放下一些执念,遂将这些知识整理成文,以纪念曾经努力学习奋斗的…

利用Dockerfile文件执行docker build自动构建镜像

一、Dockerfile使用详解 1.1 Dockerfile介绍 DockerFile是一种被Docker程序解释执行的脚本,由一条条的命令组成的,每条命令对应linux下面的一条命令,Docker程序将这些DockerFile指令再翻译成真正的linux命令,其有自己的书写方式和…

读零信任网络:在不可信网络中构建安全系统08设备清单管理

1. 设备清单管理 1.1. 设备的认证和完整性检查是零信任安全至关重要的第一大步,但是仅仅验证设备是否属于企业是不够的 1.2. 设备清单管理涉及对设备及其属性进行编目管理 1.2.1. 将配置管理作为设备清单数据库 1.2.2. 维护/管理这些记录对客户端和服务器设备同样…

AI电销机器人的效果与作用

ai电销机器人的工作效率是非常高的,电销机器人一天的外呼量至少是3000左右,工作效率是人工的十倍还多,并且电销机器人没有负面情绪,一直都可以保持高昂的工作热情,非常简单方便。 并且ai电销机器人是越用越聪明的&…

刘润《关键跃升》读书笔记3

1) 防御动⼒”发动机 ⽐如,恐惧。 转正考核、末位淘汰等,本质上都是在制造“危险”环境,从⽽激发员 ⼯全⼼投⼊。万⼀没转正,万⼀被淘汰,房贷怎么还,孩⼦怎么养? 你想想都害怕&am…

【Redis 进阶】哨兵 Sentinel(重点理解流程和原理)

Redis 的主从复制模式下,一旦主节点由于故障不能提供服务,需要人工进行主从切换,同时大量的客户端需要被通知切换到新的主节点上,对于上了一定规模的应用来说,这种方案是无法接受的,于是 Redis 从 2.8 开始…

sa-token登录机制以及网关统一鉴权环境搭建

文章目录 1.sa-token1.37集成(基于token)1.文档网址2.**sun-club-auth-application-controller引入依赖**3.application.yml4.sun-club-auth-application-controller测试的controller1.UserController.java2.启动测试1.登录,得到satoken2.验证…

当AIGC走进温室大棚:AI+“种菜“的前世今生

( 于景鑫 国家农业信息化工程技术研究中心) 近年来,人工智能生成内容(AIGC)技术引发业界广泛关注。从NLP领域的GPT-3到CV领域的Stable Diffusion,AIGC展现了惊人的创造力,正在重塑人们的工作和生活方式。与此同时,农业领域也正经历着数字化、智能化的深刻…

Golang环境篇

一、Golang环境篇 一)go简介 1、Golang定义 Go语言是Google于2009年推出的一门新的系统编程语言。 2、特性: 静态编译内存分配:Go 选择了 tcmalloc,它本就是为并发而设计的高性能内存分配组件。垃圾回收:每次升级&…

基于51单片机的汽车灯控制器proteus仿真

地址: https://pan.baidu.com/s/1YrwCUQIKwdth1N2UsUtSRA 提取码:1234 仿真图: 芯片/模块的特点: AT89C52/AT89C51简介: AT89C52/AT89C51是一款经典的8位单片机,是意法半导体(STMicroelectro…

基于Java的网络考试系统的设计与实现

点击下载源码 基于Java的网络考试系统的设计与实现 摘 要 科技在进步,人们生活和工作的方式正发生着改变,不仅体现在人们的衣食住行,也体现在与时俱进的考试形式上。以前的考试需要组织者投入大量的时间和精力,需要对考试的试题…

Java线程池原理剖析和应用指南

目录 Java线程池详解一、Java线程池简介池化思想池化思想的优点 二、线程池的实现原理分析实现线程池需要考虑哪些问题?线程池的简单使用示例线程池原理的简单图示 三、Executor详解Executor简介Executor框架的继承结构总结ExecutorExecutorService 四、ThreadPoolE…

免费自动化AI视频剪辑工具

下载地址:https://pan.quark.cn/s/3c5995da512e FunClip是一款完全开源、本地部署的自动化视频剪辑工具,通过调用阿里巴巴通义实验室开源的FunASR Paraformer系列模型进行视频的语音识别,随后用户可以自由选择识别结果中的文本片段或说话人&…

【Python系列】Python 协程:并发编程的新篇章

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

浪潮信息智算新突破:高密低耗风冷仓问世

浪潮信息与四川省天府云数据科技有限责任公司(简称能投天府云)强强联手,推出国内首款42kW智算风冷算力仓,该方案由浪潮信息深度参与研发,单机柜AI服务器部署能力跃升至传统机柜6倍以上,实现了风冷单机柜功率…

蚂蚁0511笔试-选择题

按照先序遍历确认父节点,再通过中序遍历划分左右子树。重复。 第二范式(2NF)确实要求非主属性完全依赖于候选键(不一定是主键,因为主键只是候选键的一个特例) 第一范式(1NF)要求数据…

基于python的旅游可视化系统(源码+论文+部署讲解等)

博主介绍:✌全网粉丝10W,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和学生毕业项目实战,高校老师/讲师/同行前辈交流✌ 技术范围:原生小程序开发&#xff0c…

星纪魅族双轮驱动遇阻:AI手机与造车梦能否照进现实?

在科技行业风起云涌的浪潮中,星纪魅族近期的一系列动作引起了广泛关注。从高层换血到全面押注AI,再到宣布造车计划,每一步都显得雄心勃勃,但深入剖析后不难发现,其未来发展之路实则布满荆棘。 星纪魅族选择“All in AI…