【Python基础入门系列】第09天:Python tuple

Python 中的数据结构是通过某种方式组织在一起的数据元素的集合,这些数据元素可以是数字、字符、甚至可以是其他数据结构 在 Python 中,最基本的数据结构是序列(在前面文章我们也说过序列),序列中的每个元素都有一个序号(元素的具体位置),这个序号叫索引,索引下标从0开始,以此类推......Python 的元组与列表类似,不同之处在于元组的元素不能修改。

 

 

tuple 元组()

tuple和list非常类似,但是tuple一旦初始化就不能修改,比如同样是列出名字:

>>> classmates = ('刘旺', '学长', 'allen')

现在,classmates这个tuple不能变了,它也没有append(),insert()这样的方法。其他获取元素的方法和list是一样的,你可以正常地使用classmates[0]classmates[-1],但不能赋值成另外的元素。

不可变的tuple有什么意义?因为tuple不可变,所以代码更安全。如果可能,能用tuple代替list就尽量用tuple。

tuple的陷阱:当你定义一个tuple时,在定义的时候,tuple的元素就必须被确定下来,比如:


>>> t = (1, 2)
>>> t
(1, 2)

如果要定义一个空的tuple,可以写成()


>>> t = ()
>>> t
()

但是,要定义一个只有1个元素的tuple,如果你这么定义就错:


>>> t = (1)
>>> t
1

定义的不是tuple,是1这个数!这是因为括号()既可以表示tuple,又可以表示数学公式中的小括号,这就产生了歧义,因此,Python规定,这种情况下,按小括号进行计算,计算结果自然是1

所以,只有1个元素的tuple定义时必须加一个逗号,,来消除歧义:


>>> t = (1,)
>>> t
(1,)

Python在显示只有1个元素的tuple时,也会加一个逗号,,以免你误解成数学计算意义上的括号。

最后来看一个“可变的”tuple:


>>> t = ('a', 'b', ['A', 'B'])
>>> t[2][0] = 'X'
>>> t[2][1] = 'Y'
>>> t
('a', 'b', ['X', 'Y'])

这个tuple定义的时候有3个元素,分别是'a''b'和一个list。不是说tuple一旦定义后就不可变了吗?怎么后来又变了?

别急,我们先看看定义的时候tuple包含的3个元素:

当我们把list的元素'A''B'修改为'X''Y'后,tuple变为:

表面上看,tuple的元素确实变了,但其实变的不是tuple的元素,而是list的元素。tuple一开始指向的list并没有改成别的list,所以,tuple所谓的“不变”是说,tuple的每个元素,指向永远不变。即指向'a',就不能改成指向'b',指向一个list,就不能改成指向其他对象,但指向的这个list本身是可变的!

理解了“指向不变”后,要创建一个内容也不变的tuple怎么做?那就必须保证tuple的每一个元素本身也不能变。

 

总结

本节给大家介绍了 Python 数据结构之元组的操作与使用,对 Python 工程师使用列表提供了支撑。Python的元组与列表类似,不同之处在于元组的元素不能修改。元组使用小括号,列表使用方括号。元组创建很简单,只需要在括号中添加元素,并使用逗号隔开即可。

参考:

https://www.liaoxuefeng.com/wiki/1016959663602400/1017092876846880

https://www.runoob.com/python3/python3-tuple.html

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

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

相关文章

黑客攻防:关于工业网络安全的那些事

1、概述 随着工业信息化的快速发展以及工业4.0时代的到来,工业化与信息化的融合趋势越来越明显,工业控制系统也在利用最新的计算机网络技术来提高系统间的集成、互联以及信息化管理水平。未来为了提高生产效率和效益,工控网络会越来越开放&am…

elementui table某一列是否显示_Vue项目引进ElementUI组件的方法

环境要求NodejsNodejs官网下载地址:http://nodejs.cn/download/具体安装参考其他资料打开cmd命令行,输入npm -v,如果出现如下图的显示,说明已经安装正确。如果安装版本比较老,想升级新版本npm install npm -g安装 webp…

Entry

Entry(单行输入框)用于获取用户输入的文本。 Entry组件仅允许输入一行文本,如果输入过长,那么内容将被滚动,意味着字符串不能被全部看到。 1 from tkinter import *2 3 master Tk()4 5 e Entry(master)6 e.pack(padx…

集成电路版图与工艺课程设计之用CMOS实现Y=AB+C电路与版图

1 绪论 1.1 设计背景 集成电路设计(Integrated circuit design, IC design),亦可称之为超大规模集成电路设计(VLSI design),是指以集成电路、超大规模集成电路为目标的设计流程。集成电路设计涉及对电子器…

关于H264通过RTP传输的打包方式

Q:现在小弟初次尝试H264的编码通过RTP方式传输,具体实验环境的问题如下:环境:服务器端,H264的帧数据(可能超过64k),分成N个1460字节的包,然后加上RTP头发送。客户端,VLC播…

AngualrJS之服务器端通信

译自《AngularJS》 与服务器通信 目前,我们已经接触过下面要谈的主题的主要内容,这些内容包括你的Angular应用如何规划设计、不同的angularjs部件如何装配在一起并正常工作以及AngularJS中的模板代码运行机制的一小部分内容。把它们结合在一起&#xff0…

硬盘显示容量和实际容量不符合_买移动固态硬盘纠结大半天?花2分钟看完这篇,购买时不再被坑...

如今移动硬盘已成为很多办公用户标配的物品,纵观整个移动硬盘市场,主要有移动机械硬盘和移动固态硬盘两种类型,前者容量大,价格较亲民;而后者具备了轻薄、读写速度快、耐振动不怕摔等优点。不少追求高效率的用户&#…

【Python基础入门系列】第10天:Python 类与对象

首先,我已经假定你是个萌新或已经看了无数遍的垃圾文章,然后依然搞不懂类和对象,但是呢起码知道有类和对象这么两个玩意儿,我觉得有必要找一篇生动形象的示例来讲解。 由于你可能没有编程经验, 所以无法从学过的编程…

数字电子技术课程设计之基于触发器的三位二进制同步减法计数器无效态000/110

基于触发器的三位二进制同步减法计数器无效态000/110 1 课程设计的目的与作用 掌握用multisim 的电路仿真程序 熟悉同步计数器工作原理和逻辑功能 熟悉计数器电路的分析和设计方法 掌握161 芯片集联成任意进制同步加法计数器 2 设计任务 三位二进制减法计数器(无…

SUSE11 搭建iscsi target 配置

https://www.suse.com/documentation/sles11/stor_admin/data/sec_inst_system_iscsi_target.html#sec_inst_system_iscsi_target_manual https://www.novell.com/support/kb/doc.php?id7001308 http://scst.sourceforge.net/comparison.html转载于:https://www.cnblogs.com/b…

图像、帧、片、NALU(firstime)

图像、帧、片、NALU 是学习 H.264 的人常常感到困惑的一些概念,我在这里对自己的理解做一些阐述,欢迎大家讨论:H.264 是一次概念的革新,它打破常规,完全没有 I 帧、P帧、B 帧的概念,也没有 IDR 帧的概念。对…

【Python的黑魔法】实例方法、静态方法和类方法

class Bird:# classmethod修饰的方法是类方法classmethoddef fly (cls):print(类方法fly: ,cls)# staticmethod修饰的方法是静态方法# staticmethoddef info (p):print(静态方法info: , p)if __name__ __main__:# 调用类方法,Bird类会自动绑定到第一个参数Bird.fl…

基于dreamweaver软件设计和开发一网站_基于 abp vNext 和 .NET Core 开发博客项目 Blazor 实战系列(一)...

系列文章使用 abp cli 搭建项目给项目瘦身,让它跑起来完善与美化,Swagger登场数据访问和代码优先自定义仓储之增删改查统一规范API,包装返回模型再说Swagger,分组、描述、小绿锁接入GitHub,用JWT保护你的API异常处理和…

CSS边框,背景,边距,溢出

CSS边框,背景,边距,溢出 css边框属性 border:宽度 样式 颜色; border-color; border-style; 边框样式:solid实现,dotted点状线,dashed虚线CSS3的样式 border-radius:圆角处理 box-shadow: x轴偏移 y轴偏移 模糊度 扩散成都 颜色…

LINUX 内存使用情况

# free 显示结果如下: Mem:表示物理内存统计 total 内存总数 8057964KBused 已使用的内存 7852484KBfree 空闲的内存数 205480KBshared 当前已经废弃不用,总是0buffers Buffer 缓存内存数: 290432KBcached Page 缓存内存数:5735024KB(存在关…

vagrant系列教程(四):vagrant搭建redis与redis的监控程序redis-stat(转)

阅读目录 下载redis解压redis编译安装redis配置redisredis开机自启动系统参数的调整上一篇php7环境的搭建 真是火爆,仅仅两天时间,就破了我之前swagger系列的一片文章,看来,大家对搭建环境真是情有独钟。 为了访问量,我…

sps及pps在解码器内传递过程

首先解码器中有一个全局变量seq_parameter_set_rbsp_t SeqParSet[MAXSPS];// MAXSPS32,它是一个指向序列参数集的数组。还有一个全局变量seq_parameter_set_rbsp_t *active_sps;主要为后续解码所用。解码器先将码流中的数据读入临时指针sps,之后存入全局…

【技术分享】Ubuntu下使用微信教程

做后端开发的同学用的Linux(ubuntu),肯定会因为没有适配微信版本会感觉不太舒服,很多时候因为缺少一些办公通讯软件而感到不便。现在已经有很方便的Wine WeChat方案,但是微信在Wine上配置还有许多bug,今天在github上看…

python join函数_Python join()函数

原博文 2016-08-12 10:16 − 今天写python 100例时,有个题目是大致是这样的:已知输入形式是1321,要求输出形式为1123 一开始思路是将输入的字符串用split()函数划分成数组,在对数组进行排序,再用for循环输出 代码附上&…

CSS中的盒子

盒子 盒子模型解释元素在页面中显示成一个方块,类似一个盒子,CSS盒子模型就是使用现实中盒子来做比喻,帮助我们设置元素对应的样式。盒子模型示意图如下: 把元素叫做盒子,设置对应的样式分别为:盒子的边框…