【每天多努力一点】Python编程之元组

和列表类似,元组(tuple)也是由一系列按特定顺序排列的元素组成的一种复合数据类型。
在某些特定的情境下,元组和列表的区别并没有那么明显。

元组的初始化

元组的基本格式

在Python中,列表通常用小括号(())表示,并且用逗号将其中的元素分隔开。基本语法为

# 元组名 = (元素, 元素, 元素, ..., 元素)
students_tuple = ("xiaoming", "xiaohong", "xiaohei", 'xiaogang')
print(students_tuple)

输出:

('xiaoming', 'xiaohong', 'xiaohei', 'xiaogang')

注意到,上述代码中的变量名students_tuple用下划线_将单次students和tuple进行连接,这样就很容易能够看出这个变量的类型是一个元组而非一个列表。这是一种良好的编码习惯。

需要注意的是,如果我们想要用上述方式初始化一个只包含一个元素的元组时,需要用下面的方式进行。
元组名 = (元素,)
如:

PI = (3.14159,)
print(PI)

输出:

(3.14159,)

而以下的代码是无法实现我们的目的的。

PI = (3.14159)
print(PI)

输出:
3.14159
仔细对比前后代码,我们会发现如果使用PI = (3.14159)这样的方式进行初始化的话,这一对括号会被编译器认为是数字运算中用于表达运算优先级的括号,而不会被认为是元组的括号。
如果想要初始化一个只包含一个元素的元组,那么必须使用在括号中带上一个逗号,如PI = (3.14159,)

空元组的初始化

如果想初始化一个空元组,一般有两种方式可以实现。其基本语法为
元组名 = ()
元组名 = tuple()

tuple1 = ()
tuple2 = tuple()
print(tuple1, tuple2)

输出:
() ()
需要注意的是,其实大部分时候我们并不会使用到空元组。
上述内容只是作为一个初学者的示例进行讲解。

元组的索引和切片

索引

类似列表,元组同样属于有序的复合数据类型,所以元组同样支持索引操作。其基本语法为
所取的元素 = 元组[索引值]

切片

字符串,列表和元组均属于有序的数据类型。
列表的切片操作对元组同样适用,只是得到的切片结果是一个元组而非一个列表。比如

tup = (1, 3, 5, 7, 9, 11)
sub_tup = tup[1:4]
print(sub_tup)

输出:
(3, 5, 7)

元组的增删改

元组是不可变数据类型

当我们想用类似于列表的方式去修改元组中的元素的时候,会发现行不通。譬如

students_tuple = ("xiaoming", "xiaohong", "xiaohei", 'xiaogang')
students_tuple[1] = "xiaomei"
print(students_tuple)

会出现TypeError类型错误的报错
TypeError: ‘tuple’ object does not support item assignment
这是因为元组和字符串类似,都属于不可变数据类型。
我们无法直接通过索引,对元组中的元素进行修改。

将元组和列表的相互转化

虽然我们不能直接对元组本身进行修改,但既然元组和列表的结构和形式如此相似,那么很容易想到,我们可以将元组转换为列表,对转化后的列表进行修改,再将修改后的列表转换回元组。
将元组转化为列表的其基本语法为
列表名 = list(元组名)
类似的,将列表转换为元组的其基本语法为
元组名 = tuple(列表名)
比如我们想把students_tuple元组中索引为1的元素修改为"xiaomei",我们可以先将students_tuple元组转化为students列表,修改后再转换回元组。其代码如下

students_tuple = ("xiaoming", "xiaohong", "xiaohei", 'xiaogang')
students = list(students_tuple)
students[1] = "xiaomei"
students_tuple = tuple(students)
print(students_tuple)

输出:
(‘xiaoming’, ‘xiaomei’, ‘xiaohei’, ‘xiaogang’)

如果想增加或删除元组中的元素,也是通过类似的操作来完成。

相比于列表,元组是更简单的数据结构。
如果需要存储的一组元素在程序的整个生命周期内都不变,可使用元组代替列表来储存数据。

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

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

相关文章

题目 3209: 蓝桥杯2024年第十五届省赛真题-好数

一个整数如果按从低位到高位的顺序,奇数位(个位、百位、万位 )上的数字是奇数,偶数位(十位、千位、十万位 )上的数字是偶数,我们就称之为“好数”。给定一个正整数 N,请计算从…

数据结构与算法学习笔记----KMP

数据结构与算法学习笔记----KMP author: 明月清了个风 last edited: 2024.11.24 Acwing 831. KMP字符串 给定一个字符串 S S S,以及一个模式串 P P P,所有字符串中只包含大小写英文字母以及阿拉伯数字。 模式串 P P P在字符串 S S S中多次作为子串出…

算法基础 - 二分迭代法求解非线性方程

文章目录 1. 基本思想2. 编程实现2.1. 非递归2.2. 递归方案 3. 总结 二分迭代法使用了二分算法思想求解非线性方程式。 下面要求使用二分迭代法求解: 2x3-5x-10 方程式,且要求误差不能大于10e-5。 二分迭代法也只是近似求解算法。 所谓求解&#xff…

家校通小程序实战教程03学生管理

目录 1 创建数据源2 搭建后台功能3 设置主列字段4 批量导入数据5 设置查询条件6 实现查询和重置总结 我们现在已经搭建了班级管理,并且录入了班级口令。之后就是加入班级的功能了。这里分为老师加入班级和学生家长加入班级。 如果是学生家长的话,在加入之…

springboot336社区物资交易互助平台pf(论文+源码)_kaic

毕 业 设 计(论 文) 社区物资交易互助平台设计与实现 摘 要 传统办法管理信息首先需要花费的时间比较多,其次数据出错率比较高,而且对错误的数据进行更改也比较困难,最后,检索数据费事费力。因此&#xff…

【C++】7000字介绍map容器和set容器的功能和使用

目录 一、关联式容器和序列式容器 二、键值对,> 三、树形结构的关联式容器 四、set容器(key模型) 1、文档官网 2、功能介绍: 3、注意事项: 4、基本使用,更多接口可查看官网: (1&…

嵌入式C语言技巧15:深入浅出:多线程编程中锁的选择与优化策略

文章目录 导读一、锁机制概览二、实战演练:锁的选择与使用三、代码执行结果与分析四、总结与展望本文是经过严格查阅相关权威文献和资料,形成的专业的可靠的内容。全文数据都有据可依,可回溯。特别申明:数据和资料已获得授权。本文内容,不涉及任何偏颇观点,用中立态度客观…

【Git】常用命令汇总

目录 一.安装及配置 1.在 Windows 上安装 2.用户信息 3.差异分析工具 二.基础 1.创建仓库 2.提交与修改 三.分支管理 1.创建分支 2.合并分支 四.远程操作 1.管理 Git 仓库中的远程仓库 2.数据的获取与推送 五.标签 1.创建轻量标签和附注标签 2.查看标签和标签信…

AWS海外注册域名是否需要实名认证?

在全球化的互联网环境中,注册域名已成为企业和个人建立在线存在的重要步骤。亚马逊网络服务(AWS)作为全球领先的云服务提供商,其域名注册服务也备受关注。然而,对于在AWS上注册海外域名是否需要实名认证,许…

【C++进阶篇】像传承家族宝藏一样理解C++继承

文章目录 须知 💬 欢迎讨论:如果你在学习过程中有任何问题或想法,欢迎在评论区留言,我们一起交流学习。你的支持是我继续创作的动力! 👍 点赞、收藏与分享:觉得这篇文章对你有帮助吗&#xff1…

DAMODEL丹摩|部署FLUX.1+ComfyUI实战教程

本文仅做测评体验,非广告。 文章目录 1. FLUX.1简介2. 实战2. 1 创建资源2. 1 ComfyUI的部署操作2. 3 部署FLUX.1 3. 测试5. 释放资源4. 结语 1. FLUX.1简介 FLUX.1是由黑森林实验室(Black Forest Labs)开发的开源AI图像生成模型。它拥有12…

具体的技术和工具在县级融媒体建设3.0中有哪些应用?

以下是结合数据来看县级融媒体建设3.0的一些情况: 技术应用方面 大数据:人民网舆情数据中心执行主任董盟君提到,通过大数据分析可让融媒体单位快速关注聚焦点,实现智能策划、智能推送、智能传播,推动媒体传播影响力提…

中兴机顶盒B860AV1.1刷机固件升级和教程「适用4/8G版」

准备工作: TTL 线(CH340G 按系统版本找到要对应驱动)下载 putty 软件拆开电视盒接好 TTL 线(2、5、6 针脚对应GND、RX、TX)在资源管理器的端口选项下找到 CH340G,记住端口号(如 COM4&#xff0…

SeggisV1.0 遥感影像分割软件【源代码】讲解

在此基础上进行二次开发,开发自己的软件,例如:【1】无人机及个人私有影像识别【2】离线使用【3】变化监测模型集成【4】个人私有分割模型集成等等,不管是您用来个人学习 还是公司研发需求,都相当合适,包您满…

QINQ技术

定义 QINQ即802.1q in 802.1q,因为IEEE802.1Q中定义的Vlan Tag域只有12个比特,仅能表示4096个Vlan,随网络发展被用尽,于是在原有带vlan的数据上再携带一层vlan标签用于扩展vlan数目。一般来说外层vlan是公网,内层是私…

linux基础2

声明! 学习视频来自B站up主 泷羽sec 有兴趣的师傅可以关注一下,如涉及侵权马上删除文章,笔记只是方便各位师傅的学习和探讨,文章所提到的网站以及内容,只做学习交流,其他均与本人以及泷羽sec团队无关&#…

鸿蒙千帆启新程,共绘数字生态蓝图

华为的鸿蒙千帆起计划:共筑数字未来,学习华为创新之路 在当今全球科技竞争日益激烈的背景下,华为作为中国科技企业的代表,正通过其自主创新的鸿蒙系统,引领一场移动应用生态的变革。鸿蒙千帆起计划,作为华…

Qt-系统相关(2)多线程网络

Qt多线程 在 Qt 中,多线程的处理⼀般是通过 QThread类 来实现。 QThread 代表⼀个在应⽤程序中可以独⽴控制的线程,也可以和进程中的其他线程共享数据。 QThread 对象管理程序中的⼀个控制线程。 QThread 常⽤ API: 使用线程 关于创建线程…

永久免费的PDF万能水印删除工具

永久免费的PDF万能水印删除工具 1.简介 PDF万能水印删除工具,可以去除99.9%的PDF水印。例如:XObject水印(含图片水印)、文本水印、绘图水印/曲线水印、注释水印、工件水印、剪切路径水印等等。本软件是永久免费,无有…

华三(HCL)和华为(eNSP)模拟器共存安装手册

接上章叙述,解决同一台PC上同时部署华三(HCL)和华为(eNSP)模拟器。原因就是华三HCL 的老版本如v2及以下使用VirtualBox v5版本,可以直接和eNSP兼容Oracle VirtualBox,而其他版本均使用Oracle VirtualBox v6以上的版本,…