python数据结构之元组

元组是Python中的不可变序列,类似于列表但不可修改。可以通过tuple()函数或直接用逗号分隔元素来创建元组。尽管元组本身不可变,但其包含的可变对象(如列表)仍能被修改,这可能导致看似改变元组状态的情况。元组的不可变性提供了一定的数据完整性,并允许它们作为字典的键。理解元组的这一特性对于Python编程至关重要。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

和列表一样,元组也是一种序列,不同的是,元组不可以被修改(字符串也是如此)。因此,元组属于不可变序列。

创建元组的方法同样很简单:

1、利用tuple函数:

>>> t1=tuple('python')
>>> t1
('p', 'y', 't', 'h', 'o', 'n')

2、直接赋值,元素间用逗号隔开:

>>> t2=1,2,3
>>> t2
(1, 2, 3)
>>> t2=5,
>>> t2
(5,)
>>> t2=5*(3+20,)
>>> t2
(23, 23, 23, 23, 23)

可以这么说,元组除了语法和不可修改之外,在操作上几乎和列表没有任何区别。能够用于列表的操作大多数都能够用于元组,在上篇列表中,这些操作也都详细演示过,因此不再重复。那么问题来了,既然元组与列表如此相似,python为何多此一举有了列表之后,又有元组呢?

元组的不可变性提供了某种完整性,可以保证自身在程序中不会被修改。而列表不能。元组还能作为字典的键,而列表也不能。


看下面一个关于元组的例子:

>>> t1=(1,2,[3,4])
>>> t2=(1,2,[3,4])
>>> t1==t2
True
>>> t1[2].append(5)
>>> t1
(1, 2, [3, 4, 5])
>>> t2
(1, 2, [3, 4])
>>> t1==t2
False

好像哪里不对劲,不是说元组是不可以被修改的吗?怎么上面这个例子的元组就被成功修改了呢?

这是因为元组的不可变仅在于自己本身的结构内存,而与内部的引用对象无关,如果引用的对象是可修改的(如列表),那么该项元素就能被修改,上面的例子就是这样。但如果,引用元素是字符串,元组等不可变对象,就不能被修改。如下:

>>> t=(1,2,(3,4))
>>> t[2].append(5)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'tuple' object has no attribute 'append'
>>>

直接报错了,提示元组没有append方法。

所以,元组的不可变性是相对而言的。相对与本身结构内存是不可变的,相对于内部引用对象,得视具体情况而定。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值