LLM系列:1.python入门:6.元组型对象(tuple)

元组型对象(tuple)

一. 元组基础

元组(tuple)是Python中一类非常重要的容器型对象。它与列表的功能非常类似,但最核心的区别在于:元组是不可变对象类型。正因为其不可变性,适当使用元组将很大程度上确保代码运行的稳定性。

1. 元组的创建

通常使用小括号 () 来标注和创建元组。

(1).直接创建
python 复制代码
# 可存放不同类型的对象
t = ('Hi', 1, print, (1, 2), [1, 2])
(2).空元组与单元素元组

创建只包含一个元素的元组时,必须在元素后加上逗号,否则 Python 会将其视作普通的运算括号(即原数据类型)。

python 复制代码
# 空元组
t_empty = ()

# 易错点辨析
type((1))    # 结果为 int,这只是一个加了括号的整数
type((1, ))  # 结果为 tuple,这才是正确的单元素元组创建方式
(3).使用 tuple() 函数

通过 tuple() 函数可以将其他可迭代对象(如列表、字符串等)转化为元组。

python 复制代码
# 将列表转化为元组
tuple([1, 2])     # 结果为 (1, 2)

# 将字符串转化为元组
tuple('Hello')    # 结果为 ('H', 'e', 'l', 'l', 'o')
(4).结合 range() 函数创建

和列表一样,当需要创建具有一定分布规律数值的元组时,也可借助 range() 函数来实现。

python 复制代码
# range(start, stop, step) 规则与列表一致,左闭右开
tuple(range(5))         # (0, 1, 2, 3, 4)
tuple(range(2, 5))      # (2, 3, 4)
tuple(range(5, 2, -2))  # (5, 3)

2. 基础索引与切片

元组的索引和切片方法与列表、字符串完全一致。

  • 正向索引t[2] 获取第三个元素。
  • 反向索引t[-1] 获取最后一个元素。
  • 切片t[1:3] 获取索引1到2的元素。
  • 反向切片t[::-2] 反向每隔一个取一个元素。

3. 元组的不可变性

元组是不支持原地修改的容器。不能向元组中增加元素,不能删除元素,也不能修改元素

注:元组的不可变,本质上是指元组中每个元素的"指向"永远不变。

如果元组中包含了一个可变对象(如列表),虽然你不能改变这个元组指向另一个列表,但你可以修改这个内部列表里的元素内容:

python 复制代码
# t1 的普通元素不支持修改
t1 = (0, 1, 2)
t1[1] = 0  # 报错:TypeError: 'tuple' object does not support item assignment

# t2 中包含了一个可变的列表对象
t2 = ('a', 'b', ['A', 'B'])
# 我们不能修改 t2[2] 指向其他的对象,但可以修改 t2[2] 这个列表内部的值
t2[2][0] = 'X'
t2[2].append('Z')
print(t2)  # 输出: ('a', 'b', ['X', 'B', 'Z'])

二. 元组方法与操作

1. 运算符 (+, *) - 元组拼接与复制

作用:元组支持加法 + 和乘法 * 运算符。加法用于合并两个元组,乘法用于将元组元素复制拼接。

python 复制代码
tuple1 + tuple2
tuple * n

参数:

  • 无特定函数参数,属于运算符。

返回值:

  • 成功: 返回一个新的元组对象(tuple),原元组不发生改变。

示例:

python 复制代码
t1 = (1, 3, 4)
t2 = (1, 'Hi')

# 加法拼接
t1 + t2   # 结果为 (1, 3, 4, 1, 'Hi')

# 乘法复制
t2 * 2    # 结果为 (1, 'Hi', 1, 'Hi')

2. count - 统计元素次数

作用:统计指定值在元组内出现的总次数。

python 复制代码
tuple.count(value)

参数:

  • 值 (value): 需要被统计的目标元素(Any)。

返回值:

  • 成功: 返回该元素在元组中出现的整数次数(int)。

示例:

python 复制代码
t = (0, 1, 2, 3, 1, 3)
# 统计元素 3 在元组中出现的次数
t.count(3)
# 结果为 2

3. index - 查找首次出现的索引

作用:根据内容查找对应的索引,返回指定值在元组中第一次出现的索引位置。

python 复制代码
tuple.index(value, start=0, end=len(tuple))

参数:

  • 值 (value): 需要查找的目标元素(Any)。
  • 起始索引 (start): 可选,查找区间的起点(包含)(int)。
  • 结束索引 (end): 可选,查找区间的终点(不包含)(int)。

返回值:

  • 成功: 返回查找到的第一次出现的整数下标(int)。找不到则报错。

示例:

python 复制代码
t = (0, 1, 2, 3)
# 查找元素 3 第一次出现的索引
t.index(3)
# 结果为 3

4. in 关键字 - 判断元素是否存在

作用:判断某元素是否存在于元组中。

python 复制代码
value in tuple

参数:

  • 值 (value): 需要判断的目标元素(Any)。
  • 元组 (tuple): 被查找的目标容器(tuple)。

返回值:

  • 成功: 存在返回布尔值 True,不存在返回 False(bool)。

示例:

python 复制代码
t = (0, 1, 2, 3)

# 检查 3 是否在元组中
3 in t  # 结果为 True

# 检查 4 是否在元组中
4 in t  # 结果为 False
相关推荐
ZC跨境爬虫2 小时前
Scrapy实战:5sing原创音乐网多页数据爬取(完整可运行,附避坑指南)
爬虫·python·scrapy·html
西西弗Sisyphus2 小时前
Python dataclasses 中 field 的 default_factory 参数用法
python·field·dataclasses·default_factory
晴天¥2 小时前
使用Openfiler为达梦数据库集群搭建共享存储
运维·服务器·存储
Saniffer_SH2 小时前
【市场洞察】一叶知秋 - 从2026年开年Quarch公司PCIe 6.0测试工具销售状况说起
服务器·人工智能·嵌入式硬件·测试工具·fpga开发·自动化·压力测试
yuyuyuliang002 小时前
python笔记1
开发语言·笔记·python
摇滚侠2 小时前
Groovy 如何给集合中添加元素
java·开发语言·windows·python
云淡风轻~窗明几净2 小时前
ubuntu的lazarus的Tline/TeaLine组件的构思
linux·数据库·ubuntu
小宋0012 小时前
ROS2 安装指南(Ubuntu 22.04+Humble)
linux·运维·ubuntu
爱学习的小囧2 小时前
VMFS与NFS性能对比(含场景适配+实操建议)
运维·数据库·自动化·esxi·虚拟化