Python编程实战 · 基础入门篇 | 元组(tuple)

作者:程序员爱钓鱼日期:2025/10/26

在学习完列表(list)之后,你会发现 Python 中的序列类型非常灵活。但除了可变的列表,还有一种不可变的序列类型——元组(tuple)。 元组在数据处理、函数返回值、解包操作等场景中都非常常见,是 Python 程序员必须掌握的基础结构之一。


一 什么是元组(tuple)

元组(Tuple)是一个有序、不可变的序列类型。 它与列表类似,也可以存放多个不同类型的元素,但一旦创建,内容就不能被修改

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

1t = (1, 2, 3)
2print(t)
3

输出:

1(1, 2, 3)
2

你可以把元组看作是“不可修改的列表”。


二 元组的创建方式

1. 使用小括号创建

1t1 = (1, 2, 3)
2

2. 不加括号,直接用逗号分隔

1t2 = 1, 2, 3
2print(t2)  # (1, 2, 3)
3

Python 会自动将多个逗号分隔的值识别为一个元组。

3. 单元素元组的特殊写法

如果只有一个元素,需要加上逗号,否则不会被识别为元组。

1t3 = (5,)   # 正确写法
2t4 = (5)    # 错误,这只是一个整数
3print(type(t3))  # <class 'tuple'>
4print(type(t4))  # <class 'int'>
5

4. 使用 tuple() 函数创建

1t5 = tuple([1, 2, 3])
2print(t5)  # (1, 2, 3)
3

三 元组的访问与切片

元组的访问方式与列表完全一致。

1t = ('apple', 'banana', 'cherry')
2print(t[0])    # apple
3print(t[-1])   # cherry
4print(t[0:2])  # ('apple', 'banana')
5

四 元组的不可变性

元组的最大特点就是不可变,意味着你不能对其进行修改、添加或删除操作。

1t = (1, 2, 3)
2t[0] = 99  # ❌ 报错
3

报错信息:

1TypeError: 'tuple' object does not support item assignment
2

虽然元组本身不可变,但如果元组中包含可变对象(比如列表),列表的内容是可以改变的。

1t = (1, [2, 3], 4)
2t[1].append(5)
3print(t)  # (1, [2, 3, 5], 4)
4

这说明:元组的引用不可变,但引用的对象本身可以变。


五 元组的常用操作

1. 拼接与重复

1a = (1, 2)
2b = (3, 4)
3print(a + b)   # (1, 2, 3, 4)
4print(a * 3)   # (1, 2, 1, 2, 1, 2)
5

2. 成员判断

1t = (10, 20, 30)
2print(20 in t)    # True
3print(100 not in t)  # True
4

3. 遍历元组

1for item in ('A', 'B', 'C'):
2    print(item)
3

4. 获取长度与最大最小值

1t = (5, 3, 8, 1)
2print(len(t))  # 4
3print(max(t))  # 8
4print(min(t))  # 1
5

六 元组的解包(Unpacking)

Python 支持对元组进行“解包”操作,即一次性将元组的多个值赋给多个变量。

1person = ('Alice', 25, 'Developer')
2name, age, job = person
3print(name)  # Alice
4print(age)   # 25
5print(job)   # Developer
6

还可以使用星号 * 接收不确定数量的元素:

1a, *b = (1, 2, 3, 4, 5)
2print(a)  # 1
3print(b)  # [2, 3, 4, 5]
4

七 元组的应用场景

1. 函数返回多个值

1def get_user_info():
2    return "Tom", 28, "Engineer"
3
4name, age, job = get_user_info()
5print(name, age, job)
6

2. 作为字典的键

由于元组是不可变的,因此可以作为字典的键使用,而列表不行。

1pos = {(0, 0): 'A', (1, 1): 'B'}
2print(pos[(0, 0)])  # A
3

3. 固定结构的数据存储

当数据在逻辑上不会被修改时,用元组更安全也更高效,比如坐标点 (x, y)、RGB 颜色 (r, g, b) 等。


八 小结

特性列表(list)元组(tuple)
是否可变✅ 可变❌ 不可变
语法符号[]()
典型用途需要修改的数据集合固定结构的数据
可作为字典键❌ 否✅ 是

九 实战示例:学生信息表

1students = [
2    ('Tom', 20, 'A'),
3    ('Lucy', 19, 'B'),
4    ('Jack', 21, 'A')
5]
6
7for name, age, grade in students:
8    print(f"{name} 的年龄是 {age},成绩等级为 {grade}")
9

输出:

1Tom 的年龄是 20,成绩等级为 A
2Lucy 的年龄是 19,成绩等级为 B
3Jack 的年龄是 21,成绩等级为 A
4

通过元组存储固定结构的数据,使代码结构清晰且高效。


✅ 总结

  1. 元组是有序、不可变的序列类型。
  2. 用小括号 () 或逗号创建,单元素元组必须加逗号。
  3. 支持索引、切片、拼接、遍历等操作。
  4. 不可变性让元组更安全,也能作为字典键。
  5. 常用于函数多值返回、数据打包与解包、固定结构存储等场景。


Python编程实战 · 基础入门篇 | 元组(tuple)》 是转载文章,点击查看原文


相关推荐


复杂结构数据挖掘(三)关联规则挖掘实验
nju_spy2025/10/23

目录 1. 数据集导入观察 2. Apriori算法、FP-Growth算法 使用方式 3. 朴素 brute-force 4. grid_search 参数比较 + 三种算法比较 5. main 函数 与 报告生成 6. 实验结果总结 – 通过调整不同级别的支持度与置信度,比较 Apriori 算法、FP-Growth 算法以及一种进行穷举搜索的基准方法。 比较维度包括:生成的频繁项集数量、规则挖掘所用的存储空间、计算成本 – 发现一些有趣的关联规则,并就这些规则所揭


MySQL数据库05:DQL查询运算符
Doro再努力2025/10/22

文章目录 一、运算符简介 二、算术运算符 三、比较运算符 四、逻辑运算符 五、条件查询 五、位运算符(了解) 5.1按位与 5.2按位或 5.3按位异或 5.4按位右移 5.5按位左移 5.6按位取反 一、运算符简介         数据库中的表结构确立后,表中的数据代表的意义就已经确定。通过MSQL运算符进行运算,就可以获取到表结构以外的另一种数据。例如,学生表中存在一个birth字段,这个字段表示学生的出生年份,而运用MySQL的算术运算符用当前的年份减学生出


主流的 MCU 开发语言为什么是 C 而不是 C++?
淘晶驰AK2025/10/20

要说主流 MCU 开发为啥是 C 而不是 C++,你先琢磨琢磨 MCU 那点家当 —— 存储空间按 KB 算,RAM 可能就几十 KB,算力更是抠抠搜搜,稍微重点的操作都怕给它干死机。这种环境下,代码的每一个字节、每一次内存访问都得精打细算,而 C 语言天生就带着这种 "极简主义" 的基因。 你想啊,写 MCU 程序,核心就是跟寄存器打交道,直接往地址里塞数,中断服务程序得像闪电一样快,容不得半点拖泥带水。C 语言就像一把朴实的扳手,没有多余的零件,编译器一转就是干干净净的机器码,你写*(vo


jenkins在使用中遇到的问题
tingting01192025/10/19

一、jenkins使用docker命令权限拒绝 将jenkins用户添加到docker组: # usermod -aG docker jenkins # systemctl restart jenkins 二、推送私有仓库提示拒绝 # cp -r /root/.docker ./jenkins # chown -R jenkins.jenkins .docker 三、jenkins 提示kubectl 命令Authentication required # s


美团LongCat-Audio-Codec:给语音大模型装上“顺风耳”与“巧舌”
墨风如雪2025/10/18

各位AI圈的朋友们,又一个重磅消息!美团在2025年10月17日悄然揭开了它在语音AI领域深耕已久的秘密武器——LongCat-Audio-Codec的神秘面纱。这可不是一个普通的编解码器,它旨在为语音大模型(Speech LLM)打造一套全新的“听”与“说”的链路。想象一下,我们离那个能真正流畅、自然、高效对话的AI,又近了一大步! 语音AI的“死结”与LongCat的破解之道 你可能想不到,现在我们与智能设备的那些看似流畅的语音交互背后,其实隐藏着不少“死结”。语音大模型在理解语义、生成逼


AI 在数据库操作中的各类应用场景、方案与实践指南
木易 士心2025/10/16

文章目录 概述1. 数据库探索与结构分析场景说明AI 驱动的数据库探索方案 2. 智能报表生成场景说明AI 自动生成的销售分析报表 3. CRUD 操作优化场景说明AI 优化的智能 CRUD 模板 4. 查询性能优化场景说明AI 驱动的查询优化流程优化前(慢查询)AI 优化建议优化后查询 AI 推荐的索引策略 5. 复杂问题处理方案方案 1:递归查询处理层级数据方案 2:数据质量自动化检查 6. AI 辅助的数据库维护场景说明 7.


C++设计模式之行为型模式:模板方法模式(Template Method)
bkspiderx2025/10/15

模板方法模式(Template Method)是行为型设计模式的一种,它定义了一个算法的骨架,将算法的一些步骤延迟到子类中实现。这种模式允许子类在不改变算法结构的情况下,重新定义算法中的某些步骤,从而实现算法的复用与定制。 一、核心思想与角色 模板方法模式的核心是“固定流程,可变步骤”,通过在父类中定义算法的框架,将可变部分委托给子类实现。其核心角色如下: 角色名称核心职责抽象类(AbstractClass)定义算法的骨架(模板方法),包含多个抽象方法(子类必须实现的步骤)和可选的钩子方法(子


苦练Python第64天:从零掌握多线程,threading模块全面指南
倔强青铜三 VIP.1 初学乍练2025/10/14

前言 大家好,我是倔强青铜三。欢迎关注我,微信公众号:倔强青铜三。点赞、收藏、关注,一键三连! 欢迎继续 苦练Python第64天。 今天咱们把“并发”这把瑞士军刀——threading 模块,从开箱到实战一次性讲透。全程只用 Python 自带标准库,代码复制即可运行! 一、为什么需要线程? I/O 密集场景:爬虫、文件下载、日志采集,CPU 在等网络/磁盘,闲着也是闲着。 共享内存:比多进程轻量,数据不用序列化来回拷贝。 GIL?别慌:I/O 密集时线程照样提速;CPU 密集请转投 mu


局域网IP地址冲突排查与解决全指南:从诊断到预防
Bruce_xiaowei2025/10/12

局域网IP地址冲突排查与解决全指南:从诊断到预防 在局域网管理和维护中,IP地址冲突是一个常见但令人头疼的问题。当两台或多台设备被分配了相同的IP地址时,网络连接就会变得不稳定甚至中断。本文将详细介绍如何快速定位、解决并预防IP地址冲突问题。 IP地址冲突的识别与现象 典型症状表现: 设备网络连接时断时续频繁出现"网络电缆被拔出"提示Ping测试出现"一般故障"或"请求超时"特定网络服务无法访问 冲突根源分析: 手动配置IP地址时出现重复分配DHCP服务器范围设置不当网络中存在未经授权的DHCP


领码方案|微服务与SOA的世纪对话(5):未来已来——AI 驱动下的智能架构哲学
领码科技2025/10/11

📌 摘要 AI 已从工具升级为架构的“新大脑”,成为边界、治理、交付与演进的核心驱动力。本文按「方法论新生」模板,聚焦 AI 驱动下的智能架构哲学: 用智能双生体强化领域与基础设施模型用AI 增强 DDD 与契约,让边界自动进化用自驱动 Service Mesh,实现策略的智能演化用预测型 CI/CD,让发布成为预判与优化的闭环构建自演进反馈体系,让系统具备持续自优化能力 结合未来架构趋势与实践路径,给出端到端流程与行动清单,帮助组织完成从“自动化”到“智能化”的跃迁。 关键词:智能双

首页编辑器站点地图

Copyright © 2025 聚合阅读

License: CC BY-SA 4.0