Python中元组的用法2-1

本文介绍了Python中的元组定义方法,包括带圆括号和不带圆括号,以及如何通过索引访问元素。重点强调了元组的不可变性质。同时,对比了不可变类型(如元组)与可变类型(如列表)的区别。

Python中的元组用英文“tuple”表示,是多个值的集合。

1 元组的定义

可以用两种方式定义元组:一种是带圆括号的方式,另一种是不带圆括号的方式。

1.1 带圆括号的方式

使用带圆括号的方式定义元组的代码如下所示:

>>> t1 = (1,2,3)

>>> type(t1)

<class 'tuple'>

从以上代码可以看出,变量t1的类型是tuple,即元组。使用圆括号定义t1时,元组中的元素用逗号分隔。

1.2 不带圆括号的方式

使用不带圆括号的方式定义元组的代码如下所示:

>>> t2 = 1,2,3

>>> type(t2)

<class 'tuple'>

>>> print(t1==t2)

True

从以上代码中可以看出,使用两种方式分别定义的元组t1和t2,是相同的。

2 访问元组中的元素

可以通过索引来访问元组中的元素。代码如下所示

>>> print(t1[0])

1

>>> print(t1[1]==t2[2])

False

需要注意的是,元组属于不可变(immutable)类型,因此不能通过索引来修改元组中的元素,代码如下所示。

>>> t1[0] = 10

Traceback (most recent call last):

  File "<pyshell#11>", line 1, in <module>

    t1[0] = 10

TypeError: 'tuple' object does not support item assignment

此时的报错信息为“类型错误:元组对象不支持赋值操作”。

相关链接1 不可变类型与可变类型:不可变类型的对象具有固定的值,如果为该对象赋新的值,则需要创建一个新对象。数字、字符串和元组都属于不可变类型。相关代码如下:

>>> str1 = "hello"

>>> id(str1)

2145021337328

>>> str1 = "world"

>>> id(str1)

2144989705648

其中,变量str1的类型是字符串,该变量的初始值是“hello”,其id为2145021337328。当为str1赋新值(“world”)后,该变量的id变为2144989705648。因为字符串是不可变类型,所以为其赋新值后,实际上创建了一个新的对象(id发生变化)来保存这个新值。同理,可变类型的对象不具有固定的值,如果为该对象赋新的值,则不需要创建一个新对象。列表、集合、字典属于可变类型,相关代码如下:

>>> list1 = [1,2,3]

>>> id(list1)

2145021492864

>>> list1[0]=10

>>> id(list1)

2145021492864

从以上代码可以看出,变量list1类型是列表,当其值发生变化时,其id不变,因为列表是可变类型。

Python中的元组tuple)是一种不可变的有序序列,在Python编程中是不可或缺的基本数据结构之一,具有重要地位,下面是关于它的详细介绍: ### 定义 元组本身是不可变数据类型,没有增删改查操作,但元组内可以存储任意数据类型。可以使用`tuple()`或者`()`直接初始化元组;定义单个元素的元组时,需要在单个元素后面加一个逗号,如`t = (1,)`,不加逗号,类型为整型。示例如下: ```python t1 = tuple() t2 = () t3 = tuple(range(0, 10)) t4 = (1, 2, 3) t5 = (1) # 错误的定义 t6 = (1,) # 正确的定义 ``` ### 特点 元组不仅保证了数据的稳定性和安全性,还因其不可变性和内存高效性,在需要固定数据集合或作为字典键等场景下表现出色。其简洁语法和易用性,使得它在处理小型数据集或作为函数返回值时尤为方便[^1]。 ### 访问元素 元组的访问和列表类似,都可以通过索引访问。元组的索引从0开始,也支持负数索引,负数索引表示元组的末尾开始计数。同时也能进行切片操作,切片时左边是闭区间,右边是开区间。示例如下: ```python t = (1, 2, 3, 4, 5, 6, 7) print(t[2]) # 输出:3 print(t[1:5]) # 输出:(2, 3, 4, 5) ``` ### 操作 由于元组是无法被修改的,因此,元组没有增删改查的方法,这也体现了元组不可变性。不过可以对元组进行连接合和复制操作: ```python t1 = (1, 2, 3) t2 = ('a', 'b') print(t1 + t2) # 输出:(1, 2, 3, 'a', 'b') t = (1, 2) * 2 print(t) # 输出:(1, 2, 1, 2) ``` ### 命名元组 可以使用`collections`模块中的`namedtuple`来创建命名元组,命名元组可以通过属性名来访问元素,示例如下: ```python from collections import namedtuple Point = namedtuple('Point', ['a', 'b']) point = Point(1, 2) print(point.a) # 输出:1 print(point.b) # 输出:2 ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值