【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,一经查实,立即删除!

相关文章

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

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

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

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

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

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

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

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

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

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

【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异常处理和…

LINUX 内存使用情况

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

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

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

【技术分享】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盒子模型就是使用现实中盒子来做比喻,帮助我们设置元素对应的样式。盒子模型示意图如下: 把元素叫做盒子,设置对应的样式分别为:盒子的边框…

Djang重新整理migrations,解决:Django Table xxx already exist

在开发过程中,由于需求变更或者自我重构,需要清理migrations,以保持代码整洁和后续的可维护性。 场景一 不考虑数据库数据表,可以完全清空数据库里面的表的数据。 步骤: 删除所有migrations find . -path "/migr…

安全随笔2:对称加密应用场景

MD5或者说HASH值是一种不可逆的算法。如果需要从密文还原成明文,那么就需要对称和非对称这两类可逆算法。 首先,简单介绍下这两类算法。图9-1是对称算法的示意图: 图9-1 对称算法 在对称算法中,首先需要发送方和接收方协定一个密钥…

python安装多久_python安装与使用

1、进入官网下载python软件 python-3.4.4.amd64.msi http://www.python.org/download/ 这个软件包含三个环境,如下图:2、双击安装软件 3、设置环境变量path";C:\Python34"; 4、验证是否安装成功 进入cmd中,输入python,如果出现如下…

CSS中的块元素,内联元素,内联块元素

块元素,内联元素,内联块元素 元素就是标签,布局中常用的有三种标签,块元素、内联元素、内联块元素,了解这三种元素的特性,才能熟练的进行页面布局。 块元素块元素,也可以称为行元素,布局中常用的标签如&…

django 与 vue 的完美结合

最近接到一个任务,就是用django后端,前段用vue,做一个普通的简单系统,我就是一搞后端的,听到vue也是比较震惊,之前压根没接触过vue。看了vue的一些文档,还有一些项目,先说一下django…

东芝确定半导体重组计划:保留闪存其他全卖

会计丑闻给日本东芝公司的业绩带来严重影响,为了提高盈利,东芝正在对旗下的半导体、个人电脑、白色家电等业务进行一次重大重组。据日经新闻1月23日报道,东芝已经正式制定了芯片业务重组的详细计划,除了占据优势的闪存芯片之外&am…

python画两条曲线图_python绘制多个曲线的折线图

这篇文章利用的是matplotlib.pyplot.plot的工具来绘制折线图,这里先给出一个段代码和结果图: # -*- coding: UTF-8 -*- import numpy as np import matplotlib as mpl import matplotlib.pyplot as plt #这里导入你自己的数据 #...... #...... #x_axix&a…

oracle 截取字指定的字符串

过滤指定的字符串,一字符串有重复的数据内容,所以需要去掉重复的内容,subst()截取 起止下标;instr()获取终止下标位置 例如:substr(p.address, 0, instr(p.address, -, 1, 1)-1) ); case when length(substr(p.address, 0, instr(p.address, -, 1, 1)-1) ) 13 then substr(sub…