【每天多努力一点】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,请计算从…

宠物之家:基于SpringBoot的领养平台

第1章 绪论 1.1 课题背景 二十一世纪互联网的出现,改变了几千年以来人们的生活,不仅仅是生活物资的丰富,还有精神层次的丰富。时代进步的标志,就是让人们过上更好的生活。在互联网诞生之前,地域位置往往是人们思想上不…

Openlayers的interactions源码分析(一)

概述 在源码分析Openlayers默认键盘交互实现文中介绍了KeyboardZoom和 KeyboardPan的实现,它们都是继承Interaction类,封装了自己的handleEvent方法,该方法接受一个mapBrowserEvent参数,计算出地图视图的变化量,最后调…

数据结构与算法学习笔记----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…

python学习——元组

在 Python 中,元组(tuple)是一种内置的数据类型,用于存储不可变的有序元素集合。以下是关于 Python 元组的一些关键点: 文章目录 定义元组1. 使用圆括号 ()2. 使用 tuple() 函数3. 使用单个元素的元组4. 不使用圆括号…

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

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

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

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

【K8s】【部署】集群部署

1 主机/服务规划 主机IP主机名节点功能类型服务分布192.168.199.20k8s.master.vip vip虚拟IP192.168.199.21k8s01k8s-MasterKeepalived、HAProxy、Docker192.168.199.22k8s02k8s-MasterKeepalived、HAProxy、Docker192.168.199.23k8s03k8s-NodeDocker192.168.199.24k8s04k8s-N…

【Git】常用命令汇总

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

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

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

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

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

【大数据测试之:RabbitMQ消息列队测试-发送、接收、持久化、确认、重试、死信队列并处理消息的并发消费、负载均衡、监控等】详细教程---保姆级

RabbitMQ消息列队测试教程 一、环境准备1. 安装 RabbitMQ2. 安装 Python 依赖 二、基本消息队列中间件实现1. 消息发送模块2. 消息接收模块 三、扩展功能1. 消息持久化和队列持久化2. 消息优先级3. 死信队列(DLQ) 四、并发处理和负载均衡1. 使用 Python …

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…

论 AI(人工智能)的现状

刚直播完,就写篇文章,说说我对AI的看法。 一直以来,想对AI 有一个总结,现在AI工具层出不穷,但是它的本质上发展还是缓慢,通过其他方式来扩展本身的能力。 我认为的人工智能 只有像钢铁侠与贾维斯以及终结…

volcano k8s 部署

下载volcano-development文件 官网 https://volcano.sh/zh/docs/installation/volcano-development.yaml wget https://raw.githubusercontent.com/volcano-sh/volcano/master/installer/volcano-development.yaml部署volcano 查下需要下载的镜像 grep vc- volcano-develo…