关于在元祖中+=

Posted 阿里山QQ

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于在元祖中+=相关的知识,希望对你有一定的参考价值。

先看一个例子:

>>> t  = (1,2,[30,40])
>>> t[2] += [50,60]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: ‘tuple‘ object does not support item assignment
>>>
>>> t
(1, 2, [30, 40, 50, 60])

这里产生了一个非常奇怪的现象:本来元祖的元素是不可变的,所以在操作的时候,报了TypeError错误,但是元祖的元素的确实被改变了;

 

实际上,在赋值语句的时候,如果我们把t[2]当做一个普通变量,因为其值是可变的对象,所以,赋值赋值操作可以完成,但是,当在重新赋值后的对象被放入元祖的时候,报错了;而且错误之后,之前的赋值操作也没有回退;

说明:这样的赋值操作不是原子性的;

为了避免这种操作,元祖中包含可变对象,可以使用如下操作避免报错:

t = (1,2,[30,40])
t[2].extend([50,60])
print(t)

 

这样:可以看到+=和extend的差别了吧!

在实际工作中,元祖的元素不建议使用可变的对象;

以上是关于关于在元祖中+=的主要内容,如果未能解决你的问题,请参考以下文章

关于在各浏览器中插入音频文件的html代码片段

关于代码片段的时间复杂度

关于片段生命周期

关于js----------------分享前端开发常用代码片段

几个关于js数组方法reduce的经典片段

如何在片段中使用 GetJsonFromUrlTask​​.java