内置函数 tuple() 用于创建不可变的元组对象。它既可以将可迭代对象转换为元组,也可直接创建一个空元组,在数据不可变性要求较高的场景中非常实用。

一、函数语法

tuple(iterable=None)

参数:

iterable:可选。任意可迭代对象,如列表、字符串、集合、字典、生成器等。

返回值:

返回一个元组对象(tuple 类型)。

如果省略参数 iterable,则返回一个空元组 ()。

二、基础用法示例

1、创建空元组

t = tuple()# t = ()print(t)  # 输出:()

2、将列表转换为元组

lst = [1, 2, 3]t = tuple(lst)print(t)  # 输出:(1, 2, 3)

3、将字符串转换为元组

s = "abc"t = tuple(s)print(t)  # 输出:('a', 'b', 'c')

4、将字典转换为元组

d = {"a": 1, "b": 2}t = tuple(d)print(t)  # 输出:('a', 'b')  # 只包含字典的键

如果需要将键值对转换为元组,应使用 tuple(d.items())。

d = {"a": 1, "b": 2}print(tuple(d))         # ('a', 'b')print(tuple(d.items())) # (('a', 1), ('b', 2))

三、进阶技巧

1、元组是不可变对象

虽然元组本身不可变,但如果元组中包含可变对象(如列表),这些对象内部的内容仍可修改。

t = (1, [2, 3])t[1][0] = 99print(t)  # 输出:(1, [99, 3])

2、与 * 解包语法结合

tuple() 常与解包语法一起使用来快速收集数据。

def demo(*args):    t = tuple(args)    print(t)
demo(1, 2, 3)  # 输出:(1, 2, 3)

这其实是 *args 收集参数后再转为元组的常见写法。

3、与生成器配合

可以将生成器结果一次性转为元组。

t = tuple(x**2 for x in range(5))print(t)  # 输出:(0, 1, 4, 9, 16)

四、tuple 对象特点与注意事项

1、类型

tuple 是内置的不可变序列类型之一。

2、不可变性

创建后不能增加、删除或修改元素(但可包含可变对象)。

3、支持序列操作

支持索引、切片、迭代、in 成员测试等操作。

4、可哈希性

当且仅当元组中所有元素都是可哈希对象时,元组才是可哈希的,可作为字典键或集合成员。

五、补充说明

1、性能优势

元组比列表轻量,因为其内存结构更简单,元素不可变,因此在迭代和查找时通常略快。

2、常见应用场景

(1)作为字典的键(键必须是可哈希的不可变类型)

(2)固定数据集合(如坐标 (x, y))

(3)函数返回多个值(返回的是一个元组)

3、空元组快捷写法

除了 tuple(),还可用 () 直接创建空元组。

图片

“点赞有美意,赞赏是鼓励”

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐