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

Python3(10) 元组

        在 Python 编程世界里,元组(Tuple)是一种重要的数据结构。它与列表有相似之处,但又有着独特的性质,其中最显著的就是元素不可修改。下面我将结合菜鸟教程的内容,通过代码示例深入学习 Python3 中的元组知识,方便日后复习回顾。


一、元组的创建

1.1 基本创建方式

        元组使用小括号()来创建,元素之间用逗号分隔。例如:

tup1 = ("Google", "Runoob", "Taobao")
tup2 = (1, 2, 3, 4, 5)
tup3 = "a", "b", "c", "d"  # 不需要括号也可以,Python会自动识别为元组
print(tup1)
print(tup2)
print(tup3)

        运行上述代码,分别输出创建的三个元组。这种创建方式简单直接,适用于各种类型数据的组合。

1.2 创建空元组与单元素元组

        创建空元组时,直接使用一对空括号即可:

empty_tup = ()
print(empty_tup)

        当元组中只包含一个元素时,需要在元素后面添加逗号,否则括号会被当作运算符使用。例如:

tup_with_one = (50)
print(type(tup_with_one))  # 不加逗号,类型为整型
tup_with_one = (50,)
print(type(tup_with_one))  # 加上逗号,类型为元组

        运行代码后可以看到,不加逗号时,(50)被识别为整数 50,而加上逗号后,才是真正的元组。


二、元组的访问

2.1 索引访问

        元组与字符串、列表类似,下标索引也是从 0 开始,可以通过索引来访问元组中的值。例如:

tup = ("Google", "Runoob", "Taobao", "Wiki", "Weibo", "Weixin")
print(tup[0])  
print(tup[2])  

        上述代码分别输出元组tup中索引为 0 和 2 的元素。

2.2 反向索引

        除了正向索引,元组也支持反向索引,-1 表示最后一个元素,-2 表示倒数第二个元素,以此类推。例如:

print(tup[-1])  
print(tup[-3])  

        运行代码后,分别输出元组tup中倒数第一个和倒数第三个元素。

2.3 切片访问

        使用切片操作可以截取元组中的一段元素,语法和列表切片类似,为元组[起始索引:结束索引:步长](结束索引不包含在截取结果内)。例如:

print(tup[1:4])  
print(tup[::2])  
print(tup[::-1])  

        第一段代码截取索引 1 到 3 的元素;第二段代码从起始位置开始,每隔一个元素截取;第三段代码将元组反向截取。


三、元组的修改与删除

3.1 修改元组

        元组中的元素值是不允许直接修改的,尝试修改会报错。例如:

tup = (12, 34.56)
# tup[0] = 100  # 这行代码会报错,TypeError: 'tuple' object does not support item assignment

        但我们可以通过连接组合的方式创建一个新的元组。例如:

tup1 = (12, 34.56)
tup2 = ('abc', 'xyz')
tup3 = tup1 + tup2
print(tup3)  

        这里将tup1tup2连接起来,生成了一个新的元组tup3

3.2 删除元组

        元组中的元素值不允许删除,但可以使用del语句删除整个元组。例如:

tup = ("Google", "Runoob", 1997, 2000)
print(tup)
del tup
# print(tup)  # 这行代码会报错,NameError: name 'tup' is not defined

        运行代码后,元组tup被删除,再次尝试打印会提示变量未定义的错误。


四、元组运算符

4.1 长度计算

        使用len()函数可以计算元组中元素的个数。例如:

tup = (1, 2, 3, 4, 5)
print(len(tup))  

        运行代码后输出元组tup的元素个数。

4.2 连接操作

        元组之间可以使用+运算符进行连接,生成一个新的元组,包含连接的两个元组的所有元素。例如:

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

        这里将元组ab连接成新元组c

4.3 复制操作

        使用*运算符可以复制元组中的元素,生成一个新的元组。例如:

tup = ('Hi!',)
new_tup = tup * 4
print(new_tup)  

        运行代码后,('Hi!',)被复制了 4 次,生成新元组new_tup

4.4 成员检查

        使用in关键字可以检查某个元素是否存在于元组中。例如:

tup = (1, 2, 3)
print(3 in tup)  
print(5 in tup)  

        运行代码后,分别判断 3 和 5 是否在元组tup中,并输出相应的布尔值。

4.5 迭代操作

        可以通过for循环对元组进行迭代,遍历元组中的每个元素。例如:

tup = (1, 2, 3)
for num in tup:print(num, end=" ")

        运行代码后,会依次输出元组tup中的每个元素。


五、元组内置函数

5.1 len(tuple)

        计算元组元素个数,前面已有相关示例。

5.2 max(tuple)

        返回元组中元素的最大值。例如:

tup = ('5', '4', '8')
print(max(tup))  

        这里返回元组tup中的最大元素'8',需要注意的是,对于字符串类型的元组,比较的是字符的 ASCII 码值。

5.3 min(tuple)

        返回元组中元素的最小值。例如:

tup = ('5', '4', '8')
print(min(tup))  

        运行代码后,返回元组tup中的最小元素'4'

5.4 tuple(iterable)

        将可迭代系列(如列表、字符串等)转换为元组。例如:

list1 = ['Google', 'Taobao', 'Runoob', 'Baidu']
tup1 = tuple(list1)
print(tup1)  

        运行代码后,列表list1被转换为元组tup1


六、关于元组的不可变特性

        元组的不可变指的是元组所指向的内存中的内容不可变。例如:

tup = ('r', 'u', 'n', 'o', 'o', 'b')
print(id(tup))  
# tup[0] = 'g'  # 尝试修改会报错,TypeError: 'tuple' object does not support item assignment
tup = (1, 2, 3)
print(id(tup))  

        运行代码后可以看到,当重新给tup赋值时,它的内存地址发生了变化,说明是重新创建了一个新的元组对象,而不是修改原来的元组。


七、总结

        Python3 中的元组虽然元素不可修改,但在数据存储和传递等场景中有着独特的优势。通过本文对元组创建、访问、修改(间接)、删除以及运算符、内置函数和不可变特性的学习,希望能帮助你更好地掌握元组的使用,在编程过程中根据实际需求灵活运用。

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

相关文章:

  • ubuntu(28):ubuntu系统多版本conda和多版本cuda共存
  • 插件热更新后界面不更新问题
  • Flutter 环境搭建 (Android)
  • 雷达水位计在山洪预警中的作用
  • Babylon.js 材质统一转换指南:将 AssetContainer 中的所有材质转换为 PBRMetallicRoughnessMaterial
  • 【Python-Day 5】Python 格式化输出实战:%、format()、f-string 对比与最佳实践
  • 测试流程?
  • Python3(11) 字典
  • Java学习手册:Java时间类使用
  • 16:00开始面试,16:08就出来了,问的问题有点变态。。。
  • react 常用钩子 hooks 总结
  • 《Keras 3 :使用 TFServing 提供 TensorFlow 模型》
  • Linux中你必须掌握的20个常见命令,提升工作效率!
  • 问答页面支持拖拽和复制粘贴文件,MaxKB企业级AI助手v1.10.6 LTS版本发布
  • conformer编码器
  • DeskGo 4.0(官方版)桌面管理工具软件下载及安装教程
  • JDBC之ORM思想及SQL注入
  • UWA DAY 2025 正式启动|十年筑基,驱动游戏未来引擎
  • Kubernetes 节点 Not Ready 时 Pod 驱逐机制深度解析(上)
  • Web漏洞--XSS之订单系统和Shell箱子
  • Android APP 热修复原理
  • ArrayUtils:数组操作的“变形金刚“——让你的数组七十二变
  • python实现简单的UI交互
  • RT Thread 发生异常时打印输出cpu寄存器信息和栈数据
  • C++11介绍
  • 【阿里云大模型高级工程师ACP习题集】2.5 优化RAG应用提升问答准确度(⭐️⭐️⭐️ 重点章节!!!)
  • C++面试复习日记(8)2025.4.25,malloc,free和new,delete的区别
  • Maven基础、HTTP协议、请求响应(Web后端笔记第一期)
  • 策略模式(Strategy Pattern)详解
  • 深度学习--自然语言处理统计语言与神经语言模型