想必大家都知道Python数据类型中有两种对象:元组元组和列表列表。它们的编写和使用非常相似,所以我无法区分它们。可能有的同学会疯狂的去网上找他们的区别,但是可以找到下面的说法:list是可变对象,tuple是不可变对象!由于元组是不可变的,使用元组可以让你的代码更安全!等等……不过元组有什么用,到头来还是不知道。元祖元组在很多“高级”编程语言中其实是没有元组的,比如Java、C++、C#等,但是由于元组的灵活性和方便性,这些编程语言最后也加入了。而很多年轻的编程语言如Python和Scala从一开始就内置了元组类型。元组之所以如此受欢迎,最重要的一点是它的语法灵活方便,提高了编程体验。最大的特点之一是允许函数返回多个值,这是非常常用的。1.函数返回(return)多个值函数是否返回多个值?是的,你明白我的意思了。函数可以返回多个值。例如:很简单,就是一个返回坐标值(x,y)的函数,我们同时得到多个值x和y。但这与元组有什么关系?其实这里是有错觉的。Python函数返回的值本质上是单个值。看下面的代码:从打印结果可以看出,这里的返回值是一个元组!语法上,返回元组时可以省略括号,多个变量可以同时接收一个元组,按位置赋值对应。因此,当一个Python函数返回多个值时,它实际上返回的是一个元组。是不是突然觉得tuple帮了大忙,更容易得到结果?2.tuple不变性的优点相对于list,tuple是不可变的,这使得它可以作为dict的key,或者扔进set,而list不能。Tuple放弃了元素的增删改查(内存结构设计变得更精简),换取性能提升:创建tuple比list快,比list占用存储空间少。所以有“能用tuple的地方,不用list”的说法。多线程并发时,tuple不需要加锁,不用担心安全问题,写起来也简单很多。可以修改元组吗?1.创建和访问元组如果创建一个空元组,只需使用括号;如果要创建的元组中只有一个元素,则在其后添加一个逗号','。>>>temp=()>>>type(temp)>>>temp=(1,)>>>type(temp)>>>temp=(1)>>>type(temp)>>>8*(8)64>>>8*(8,)(8,8,8,8,8,8,8,8)元组逗号(,)在只有一个元素时非常重要。2.直接在同一个元组上更新和删除元组是不可行的,但是可以通过复制已有的元组片段构造新的元组来解决。通过sharding将元组拆分为两部分,然后使用连接运算符(+)合并成一个新的元组,最后将原来的变量名(temp)指向连接后的新元组。这里需要注意,逗号是必须的,括号也是必须的!__author__='管理员'#-*-coding:utf-8-*-temp=("龙猫","泰迪","叮咚猫")temp=temp[:2]+("粉红猪小妹",)+temp[2:]print(temp)"""('MyNeighborTotoro','Teddy','PeppaPig','DingDongCat')Processfinishedwithexitcode0"""DeletetupleElementsin:由于元组不可变的原则,不可能单独删除一个元素。当然,您可以使用切片更新元组并间接删除元素。__author__='管理员'#-*-coding:utf-8-*-temp=('龙猫','泰迪','粉红猪小妹','叮当猫')temp=temp[:2]+temp[3:]print(temp)"""('龙猫','泰迪','叮咚猫')Processfinishedwithexitcode0"""日常生活中很少用del来删除整个元组。因为Python的回收机制会在不再使用时自动删除这个元组。__author__='Administrator'#-*-coding:utf-8-*-temp=('龙猫','泰迪','粉红猪小妹','叮当猫')deltempprint(temp)"""Traceback(最近调用最后):文件“F:/python_progrom/test.py”,第7行,在print(temp)NameError:name'temp'isnotdefinedProcessfinishedwithexitcode0"""LastmemberThein和notin的关系运算符也可以直接应用于元组,就像列表一样。__author__='管理员'#-*-coding:utf-8-*-temp=('龙猫','泰迪','粉红猪小妹','叮咚猫')a="泰迪"c=('Teddy','PeppaPig')b=aintempd=cintempf=cnotintempprint(b)print(d)print(f)"""TrueFalseTrueProcess完成,退出代码为0"""