python的元组

元组与列表的区别

元组和列表非常相似。不同之处在于,外观上:列表是被 方括号 包裹起来的,而元组是被 圆括号 包裹起来的。本质上:列表里的元素可修改,元组里的元素是 不可以“增删改” 。

还有一个微妙的地方要注意,就是只有一个元素的元组,在格式上与列表是不同的。仅一个元素 x 的列表写成 [x], 但仅一个元素的元组要在括号内多写个逗号:(x,)

元组

我们可以把上一关的期中考试成绩用元组的形式记录。原先列表的方括号,改成英文的圆括号就可以:

midterm_rank = ('妙玉', '薛宝钗', '贾元春', '王熙凤', '林黛玉', '贾巧姐', '史湘云','贾迎春', '贾宝玉', '李纨', '贾探春', '秦可卿', '贾惜春', '贾琏'
)

元组和列表非常相似。不同之处在于,外观上:列表是被方括号包裹起来的,而元组是被 圆括号 包裹起来的。本质上:列表里的元素可修改,元组里的元素是 不可以“增删改” 。

还有一个微妙的地方要注意,就是只有一个元素的元组,在格式上与列表是不同的。仅一个元素 x 的列表写成 [x], 但仅一个元素的元组要在括号内多写个逗号:(x,)

这是因为 Python 中,圆括号承担的语法功能太多了,可以用来表示元组,也可以用于当数学运算中的小括号。(x) 这样的写法,Python 会优先理解成数学运算的小括号,所以光秃秃的 (x) 对 Python 来说就是一个套了个小括号的数学运算表达式。我们来看看代码:

single = (1)
print(type(single))
# 输出:<class 'int'>

可见,上面的 (single) 和 single 一样,都是整数。

对于仅一个元素的元组,我们要特意加个逗号来声明:这是个元组。

single = (1,)
print(type(single))
# 输出:<class 'tuple'>

有了元组这种相对稳定的数据结构,我们就再也不怕手滑把数据改掉啦!

如果真的非要去改元组内部的数据,将会报错的哦:

students = ('林黛玉', '贾宝玉', '薛宝钗')students.append('史湘云')
# 报错:AttributeError: 'tuple' object has no attribute 'append'
# (属性错误:元组对象没有 append 属性)
# 补充说明:关于“对象”“属性”,我们在后面的课程会说students[2] = '袭人'
# 报错:TypeError: 'tuple' object does not support item assignment
#(类型错误:元组对象不支持给其中元素赋值)del students[1]
# 报错:TypeError: 'tuple' object doesn't support item deletion
# (类型错误:元组对象不支持删除操作)

除了上述例子外,其它的用于增加、修改或删除语句和方法都不能用在元组上,同学们可以自己试试~

但是,由于查询与分片操作并不会改变数据,所以我们说的两种列表元素的查询方式以及分片操作,在元组中是可用的。

students = ('林黛玉', '贾宝玉', '薛宝钗')print(students[1])
# 输出:贾宝玉print(students.index('贾宝玉'))
# 输出:1print(students[:2])
# 输出:('林黛玉', '贾宝玉')

另外,上一节所说的列表运算符,元组也都支持。用 in 查询元素是否在元组内;用 + 将两个元组叠加生成新元组;用 * 生成元素重复循环多次的新元组。

students = ('林黛玉', '贾宝玉', '薛宝钗')daiyu_in = '林黛玉' in students
print(daiyu_in)
# 输出:Truestudents_plus = students + students
print(students_plus)
# 输出:('林黛玉', '贾宝玉', '薛宝钗', '林黛玉', '贾宝玉', '薛宝钗')students_triple = students * 3
print(students_triple)
# 输出:('林黛玉', '贾宝玉', '薛宝钗', '林黛玉', '贾宝玉', '薛宝钗', '林黛玉', '贾宝玉', '薛宝钗')

下面,我们总结一下元组支持的操作吧:

有人可能会举手问,如果真的有特殊需求,需要修改元组中的元素怎么办?

在这里有一个思路,可以先用 list() 函数把元组转换成列表,相当于给数据“解锁”,将元素修改完毕后,再用 tuple() 函数转换回元组,相当于“重新上锁”。

我们在下面的代码中来看看具体的操作步骤:

students = ('林黛玉', '贾宝玉', '薛宝钗')# 用 list() 函数给数据“解锁”,生成一个相同元素的新列表
students_list = list(students)# 在新列表中修改元素
students_list[0] = '妙玉'# 再次给数据“上锁”
students = tuple(students_list)print(students)
# 输出:('妙玉', '贾宝玉', '薛宝钗'

列表和元组的区别,就好比我们四大发明中的 活字印刷 和 石碑 。

两者都可以刻字,

前者的各个字模可以根据需要随意调整,适用于书本、传单等内容变化较多的内容。

石碑是一块完整的石板,一旦刻好就不能再变,适用于要长期保存的重要内容。

我们在实际应用时,也应该根据不同的需求,选择列表或元组。

课后练习

宝玉一直非常佩服黛玉的才情,黛玉写的诗词,他喜欢抄下来一遍一遍读,觉得自己怕是怎么也赶不上了。这不,湘云黛玉又开了诗社,这次是以“柳絮”为题,黛玉便赋了一首《唐多令·咏絮》:

  • 粉堕百花州,香残燕子楼。一团团逐对成逑。
  • 飘泊亦如人命薄,空缱绻,说风流。
  • 草木也知愁,韶华竟白头!叹今生谁舍谁收?
  • 嫁与东风春不管。凭尔去,忍淹留。

宝玉见了这首词,欣羡不已,说要永久珍藏,便把这首词录进了元组 willow 中。

willow = ('粉堕百花州,','香残燕子楼。','一团团逐对成逑。','飘泊亦如人命薄,','空缱绻,','说风流。','草木也知愁,','韶华竟百头!','叹今生谁舍谁收?','嫁与东风春不管。','凭尔去,','忍淹留。'
)

可是宝玉马虎劲儿又犯了,把“韶华竟白头!”抄成了“韶华竟百头!”……这么好的词,录进元组中还能抄错!

我们赶快帮他补救一下,把这个 willow 中的这个错句改对,并把正确的词完整打印出来吧。

要求:

  1. 找出错句在 willow 中的位置;
  2. 将 willow 转换成列表,修改错句;
  3. 转换回元组后,打印修改正确后的 willow
willow = ('粉堕百花州,','香残燕子楼。','一团团逐对成逑。','飘泊亦如人命薄,','空缱绻,','说风流。','草木也知愁,','韶华竟百头!','叹今生谁舍谁收?','嫁与东风春不管。','凭尔去,','忍淹留。'
)# 查询错误的列
index = willow.index('韶华竟百头!')
# 转成list
willow_list = list(willow)
# 根据下标修改
willow_list[index] = '韶华竟白头!'
# 转回元组
will = tuple(willow_list)
# 打印元祖
print(will)# 转list
# willow_list = list(willow)
# 找出错句的位置
# wrong_index = willow_list.index('韶华竟百头!')
# 修改
# willow_list[wrong_index] = '韶华竟白头!'
# 转回元组
# will = tuple(willow_list)
# print(will)

学到这里,你应该已经可以熟练地使用列表来辅助自己的教学工作啦。虽然下半学期开始了,尽心尽力的你,还在研究同学们的期中考试成绩。

不过麻烦的是,排名表和分数在不同的列表里,具体排名数字也不直观,还有没有什么办法让我们更系统直观地了解这些数字呢?看来得学一学列表相关的高级操作了。

下一篇:列表的扩展操作

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

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

相关文章

MK SD NAND(贴片式SD卡)在电力AI模块中的应用案例

近期一位客户&#xff0c;在网上了解到我们SD NAND后联系到我们&#xff0c;经过一系列了解对比后&#xff0c;下单了我们的SD NAND产品。 这位客户是做电力AI模块的&#xff0c;他们的产品主要应用在电力行业。 电力AI模块是集成了人工智能技术的系统&#xff0c;专门设计用于…

微信小程序注册流程及APPID,APPSecret获取

1.注册微信小程序 注册链接&#xff1a;公众号 (qq.com) 1.1填写邮箱、密码、验证码 1.2邮箱登录点击邮件中链接激活&#xff0c;即可完成注册 1.3用户信息登记 接下来步骤&#xff0c;将用个人主题类型来进行演示 填写主体登记信息&#xff0c;使用管理员本人微信扫描二维码…

离线环境下安装NVIDIA驱动、CUDA(HUAWEI Kunpeng 920 + NVIDIA A100 + Ubuntu 20.04 LTS)

文章目录 前言 一、基础环境 1.1、处理器型号 1.2、英伟达显卡型号 1.3、操作系统 1.4、软件环境 二、取消内核自动升级 2.1、查看正在使用的内核版本 2.2、查看正在使用的内核包 2.3、禁止内核更新 三、配置本地apt源 3.1、挂载iso镜像文件 3.2、配置apt源 3.3、…

python分别保存聚类分析结果+KeyError: ‘CustomerID‘报错

如何在完成聚类分析后按聚类编号保存数据并且带上原数据所属ID # 将每个聚类的数据保存到不同的文件中 for cluster_id in range(6): # 假设共有6个聚类cluster_data data[data[cluster] cluster_id]cluster_data_with_customer_id cluster_data.copy()cluster_data_with_…

图文并茂带你理解Java的代理模式

目录 Java的代理模式1、什么是代理模式&#xff1f;2、静态代理和动态代理3、JDK动态代理的局限性4、使用CGLIB代理机制完成未实现接口的类的代理5、JDK动态代理和CGLIB动态代理对比6、JDK动态代理为什么只能代理实现接口的类&#xff1f; Java的代理模式 1、什么是代理模式&a…

vue3使用vue3-print-nb打印

打印效果 1.下载插件 Vue2.0版本安装方法 npm install vue-print-nb --saveVue3.0版本安装方法&#xff1a; npm install vue3-print-nb --save2.main.js引入 vue2引入 import Print from vue-print-nb Vue.use(Print)vue3引入 import print from vue3-print-nb // 打印…

实时监控电脑屏幕的软件是什么?三款超受欢迎的电脑监控软件

实时监控电脑屏幕的软件在现代企业管理中扮演着至关重要的角色&#xff0c;它们不仅帮助管理者实时监控员工的工作状态&#xff0c;提高工作效率&#xff0c;还通过数据分析和报告功能&#xff0c;为企业提供了优化管理流程和决策支持的依据。以下将介绍几款市面上广泛使用的实…

大模型部署_书生浦语大模型 _作业2基本demo

本节课可以让同学们实践 4 个主要内容&#xff0c;分别是&#xff1a; 1、部署 InternLM2-Chat-1.8B 模型进行智能对话 1.1安装依赖库&#xff1a; pip install huggingface-hub0.17.3 pip install transformers4.34 pip install psutil5.9.8 pip install accelerate0.24.1…

为新质生产力注入人才“活水”

21世纪最缺的是什么&#xff1f;这个梗到今天仍有现实意义&#xff0c;答案也依旧是那两个字——人才&#xff01;不过&#xff0c;随着数字化转型的深入&#xff0c;以及国家战略布局新质生产力&#xff0c;还是应该与时俱进&#xff0c;在这两个字的前面再加上一个定语&#…

Jlink驱动包

本文分享多个版本的Jlink安装驱动包。 链接: https://pan.baidu.com/s/19P2HymfPTFK2IEfAjEoSpA 提取码: cj6k 主要分享如下版本的&#xff1a; Jlink安装驱动方法&#xff1a; 点击下一步&#xff1a; 点击 同意 然后进行安装。 安装完成后点击完成 使用方法&#xff1a; …

【Linux】Linux工具——yum,vim

1.Linux 软件包管理器——yum Linux安装软件&#xff1a; 源代码安装&#xff08;不建议&#xff09;rpm安装&#xff08;类似Linux安装包&#xff0c;版本可能不兼容&#xff0c;不推荐&#xff0c;容易报错&#xff09;yum安装&#xff08;解决了安装源&#xff0c;安装版本&…

四川音盛佳云电子商务有限公司引领抖音电商新风潮

在数字化浪潮席卷全球的今天&#xff0c;电商行业已成为推动经济发展的重要力量。作为这一领域的佼佼者&#xff0c;四川音盛佳云电子商务有限公司凭借其在抖音电商服务领域的专业实力和独特视角&#xff0c;正引领着行业的新风潮&#xff0c;助力品牌实现快速增长和腾飞。 四…

使用Python发送企业微信消息

大家好&#xff0c;在本文中&#xff0c;我们将探讨如何使用 Python 发送企业微信消息。将详细说明如何通过 Python 脚本实现消息的发送。无论是希望自动化某些任务&#xff0c;还是想要快速地向团队发送实时通知&#xff0c;本文都将为您提供一站式的解决方案。 企业微信提供了…

找不到msvcr100.dll如何修复,分享几种有效的修复方法

在计算机使用过程中&#xff0c;我们经常会遇到一些错误提示&#xff0c;其中之一就是“找不到msvcr100.dll”。这个错误通常发生在运行某些程序时&#xff0c;系统无法找到所需的动态链接库文件。这个问题可能会给用户带来困扰&#xff0c;但是幸运的是&#xff0c;有一些简单…

汇编原理 | 二进制、跳转指令、算数运算、

一.二进制 two complement reprentation&#xff08;补码&#xff09; 二进制的运算&#xff1a; 6的二进制 0110 -6的二进制 如何表示&#xff1f; 四个bit的第一个bit表示符号&#xff1a;1负0正 -6表示为1010 解释&#xff1a; 0 0000 1 0001 -1 1111&#xff08;由 …

【Ubuntu】100 系统字体安装和更改

系统&#xff1a;Ubuntu18.04LTS 1 Why we need&#xff1f; 写这篇经验贴的原因&#xff1a; ①我需要装一下中文字体&#xff08;Qt要用&#xff09;&#xff1b; ②想调一下字体大小和默认中文字体的样式 2 装第三方字体 Step1&#xff1a;安装软件Font Manager sudo ap…

【记录】打印|用浏览器生成证件照打印PDF,打印在任意尺寸的纸上(简单无损!)

以前我打印证件照的时候&#xff0c;我总是在网上找在线证件照转换或者别的什么。但是我今天突然就琢磨了一下&#xff0c;用 PDF 打印应该也可以直接打印出来&#xff0c;然后就琢磨出来了&#xff0c;这么一条路大家可以参考一下。我觉得比在线转换成一张 a4 纸要方便的多&am…

Echarts 让柱状图在图表中展示,离开X轴

文章目录 需求分析需求 分析 话不多说,直接源码展示 option = {title: {text: Waterfall Chart,subtext: Li

落地台灯有什么作用?五款口碑好的落地台灯推荐

落地台灯有什么作用&#xff1f;面对长时间工作、学习已成为当代年轻人的真实写照&#xff0c;据目前不完全统计&#xff0c;60%以上的人群每天用眼时间都已经超过10小时&#xff0c;高强度的的用眼以及不可确定的环境因素都易导致双眼出现干涉、酸痛、红血丝等情况&#xff0c…

[有监督学习]6.详细图解朴素贝叶斯

朴素贝叶斯 朴素贝叶斯&#xff08;Naive Bayes&#xff09;是常用于自然语言分类问题的算法。它在垃圾邮件过滤上的应用非常有名。 概述 朴素贝叶斯是一个基于概率进行预测的算法&#xff0c;在实践中被用于分类问题。具体来说&#xff0c;就是计算数据为某个标签的概率&…