当前位置: 首页 > ai >正文

从零开始的python学习——元组

ʕ • ᴥ • ʔ

づ♡ど

 🎉 欢迎点赞支持🎉

个人主页:励志不掉头发的内向程序员;

专栏主页:python学习专栏;


文章目录

前言

一、元组是什么

二、创建元组

三、访问下标

四、切片操作

五、遍历元组元素

六、查找元素

七、连接链表

八、修改操作

九、元组存在的意义

总结


前言

上一章节已经学习过了一个可以快速创建多个变量的列表了,本章节我们再来学习一个这样的工具,元组。通过本章节,我们将了解到我们的元组与列表的区别,以及我们为什么要有元组的存在,我们一起来看看吧。


一、元组是什么

通过学习列表,我们对创建多个变量的含义和需求已经了解充分,而我们的元组也是这样的一个工具。与列表的最大区别就在于,列表可以随时修改里面的元素,但是元组不能修改。

因此,在列表中我们学到的像读的操作,比如访问下标,切片,遍历,in,index,+等,元组也是一样支持的。

但是像写的操作,比如修改元素,新增元素,删除元素,extend等,元组都是不支持的。

二、创建元组

创建列表主要有两种方式,( ) 表示一个空的元组。

# 1. 直接使用字面值来创建
# () 表示一个空的元组
a = ()
print(type(a))# 2. 使用 tuple() 来创建
b = tuple()
print(type(b))

tuple 是 Python 中的内置函数,这里创建的都是空元组。

和列表相同,我们更加推荐我们第一种写法。我们也可以直接在()中设置初始值。

a = (1, 2, 3, 4)
print(a)

元组中的元素也是可以包含任意类型的。

a = (1, 3.4, 'hello', True, [5, 6], (7, 8))
print(a)

三、访问下标

可以通过下标访问操作符 [ ] 来获取到列表中的任意元素,下标也是从 0 开始,到 len - 1 结束的。

a = (1, 2, 3, 4)
print(a[2])

我们的下标依然可以是负数,也是代表着倒数第几个元素。

a = (1, 2, 3, 4)
print(a[-1])

当我们的下标越界访问时,我们的编译器也和列表一样会发生异常。

只不过这里变成元组越界了而已。

四、切片操作

通过下标操作是一次取出里面第一个元素。

通过切片,则是一次取出一组连续的元素,相当于得到一个子列表。

使用 [  :  ] 的方式进行切片操作。

我们的切片操作是和我们的列表是完全一样的。

a = (1, 2, 3 , 4)
print(a[1 : 3])

包括切片这里可以省略前面的下标和后面的下标,已经负数等,是完全一样的,这里就不过多赘述,大家有不懂的可以看上一章的列表的切片操作。

五、遍历元组元素

元组想要遍历的最简单的办法也是使用 for 循环。

a = (1, 2, 3, 4)
for elem in a:print(elem)

其他的方式像用 while 循环,以及使用 for 循环通过下标的方式遍历都是可以的。

六、查找元素

使用 in 操作符,判定元素是否在元组中存在,返回值是布尔类型,使用 index 方法来判定当前元素在元组中的位置,得到一个下标。

a = (1, 2, 3, 4, 5 ,6)
print(3 in a)
print(a.index(5))

当然,如果没有找到依旧是会出现异常的。

a = (1, 2, 3, 4, 5 ,6)
print(a.index(10))

七、连接链表

我们元组依旧可以使用 + 能够把两个元组拼接在一起。

a = (1, 2, 3)
b = (4, 5, 6)
print(a + b)
c = a + b
print(c)

当然,除了 + 这个连接链表的方式外,其他的就不可以了,因为其他的连接方式会改变我们的元组,只有这个 + 不会对元组产生任何改变。

八、修改操作

我们以上的操作,本质上都是读操作,它一旦创建了就不能够修改了。

# 修改操作
a = (1, 2, 3)
a.insert(1, 4)
a[1] = 5
a.append(2)
a.pop(0)
a.extend()
// .....

当我们尝试去修改的时候,我们的程序就会报错。

注:

我们元组除了以上操作外还有一个重要的操作,那就是当我们进行多元赋值时,其实本质上是按照元组的方式来进行工作的。

def getPoint():x = 10y = 20return x, yx, y = getPoint()
print(type(getPoint()))

这里就是一个多元赋值,我们的返回本质上就返回一个元组。

九、元组存在的意义

我们可以来看一个情景,在协同开发的时候,一个程序猿 A 实现一些功能,提供给程序猿 B 来使用。A写好一些函数,让 B 去调用,B肯定会函数传参的,此时B在传参的时候可能就会纠结一个问题:我把我的参数传过去了,A的函数里面是否会把我的参数内容给改了呢?如果我们使用元组就可以避免这样的纠结。

同时元组不可修改就意味着它是不可变对象,不可变对象是可哈希的(我们后面会讲)。


总结

以上就是我们同时创建很多个变量的两个类型的全部内容啦,大家要多加练习,通过不断的练习去熟练掌握。

🎇坚持到这里已经很厉害啦,辛苦啦🎇

ʕ • ᴥ • ʔ

づ♡ど

http://www.xdnf.cn/news/19946.html

相关文章:

  • PostgreSQL与SQL Server:B树索引差异及去重的优势
  • Webus 与中国国际航空合作实现 XRP 支付
  • DeepSeek文献太多太杂?一招制胜:学术论文检索的“核心公式”与提问艺术
  • Java+Vue构建的MES智能管理系统,集成生产计划、执行、监控与优化功能,支持产品、车间、工艺、客户、供应商等多维度管理,含完整源码,助力企业高效生产
  • LeetCode算法日记 - Day 31: 判定是否互为字符重排、存在重复元素
  • nextcyber——常见应用攻击
  • Dubbo分布式服务框架全解析
  • 轻松上手 qData 数据中台开源版:Docker Compose 助你10分钟跑起来
  • matlab薄透镜对物体成像
  • 数据库小册(1)
  • Day35 网络协议与数据封装
  • 开讲了,全栈经验之谈系列:写给进阶中的小伙伴
  • 短剧小程序系统开发:构建影视生态新格局
  • 学习PaddlePaddle--环境配置-PyCharm + Conda​
  • 基于vue的志愿者信息平台设计c38qk(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。
  • 结合prompt源码分析NodeRAG的build过程
  • 皮尔逊相关(Pearson)和斯皮尔曼相关(Spearman)显著性检验
  • Coze源码分析-资源库-删除提示词-后端源码
  • 正运动控制卡学习-点动
  • 景区负氧离子气象站:引领绿色旅游,畅吸清新每一刻
  • Vue3 中后台管理系统权限管理实现
  • Spring MVC 扩展机制对比总结:@Configuration + WebMvcConfigurer vs @ControllerAdvice
  • Spring Boot 启动卡死:循环依赖与Bean初始化的深度分析
  • 【问题记录】Anaconda的jupyter NoteBook点击launch的时候,弹出的页面提示ERR_FILE_NOT_FOUND
  • 【Linux我做主】细说进程等待
  • 20.35 ChatGLM3-6B QLoRA实战:4bit量化+低秩适配,显存直降70%!
  • 重温经典之游戏模拟器选型指南
  • java注解、Lambda表达式、Servlet
  • Web安全:你所不知道的HTTP Referer注入攻击
  • 【PZ-AU15P】璞致fpga开发板 Aritx UltraScalePlus PZ-AU15P 核心板与开发板用户手册