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

从零开始的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.dtcms.com/a/367224.html

相关文章:

  • 晨控CK-GW08S与汇川H5U系列PLC配置Ethernet/IP通讯连接手册
  • 别再跟风通用大模型了!企业自建专属 AI 大模型的「避坑指南 + 落地干货」
  • GitHub每日最火火火项目(9.4)
  • Linux命令和使用
  • 【数学建模学习笔记】机器学习回归:决策树回归
  • Qt---状态机框架QState
  • Java ForkJoin
  • 办公任务分发项目 laravel vue mysql 第一章:核心功能构建 API
  • Dify 低代码平台技术详解与实践
  • 实验室智能化管理信息系统如何重塑实验室运作模式?
  • Linux系统shell脚本(三)
  • 解密注意力计算的并行机制:从多头并张量操作到CUDA内核优化
  • 【Luogu_P5839】 [USACO19DEC] Moortal Cowmbat G【动态规划】
  • C语言(长期更新)第14讲:指针详解(四)
  • 第六章 Cesium 实现简易河流效果
  • FastDDS:第三节(3.2小节)
  • 规则引擎开发现在已经演化成算法引擎了
  • #T1359. 围成面积
  • Java并发编程:sleep()与wait()核心区别详解
  • 通过Interface扫描获取所有其实现类
  • AI 浪潮下阿里云“高光”乍现,但离终局胜利尚远
  • MySQL主从复制进阶(GTID复制,半同步复制)
  • 搭建基于 Solon AI 的 Streamable MCP 服务并部署至阿里云百炼
  • 鸿蒙NEXT动画开发指南:组件与页面典型动画场景解析
  • ios按键精灵提示 “设备信息丢失”如何处理?
  • 在Ant Design Vue 中使用图片预览的插件
  • Elixir通过Onvif协议控制IP摄像机,扩展ExOnvif的摄像头停止移动 Stop 功能
  • 【RNN-LSTM-GRU】第五篇 序列模型实战指南:从选型到优化与前沿探索
  • 对于数据结构:链表的超详细保姆级解析
  • 从0到1搭建某铝箔智慧工厂网络:5G与WiFi 6助力智能制造