第七章 组合数据-2元组Tuple
Python的元组与列表类似,不同之处在于元组的元素不能修改。元组使用小括号,元组创建很简单,只需要在括号中添加元素,并使用逗号隔开即可。我们来看看下面这个例子,写一写程序运行结果吧。
t1=(3)
t2=(3,)
print(t1,type(t1))
print(t2,type(t2))
print(random.random())
容我想一想 type 是啥意思了?直接告诉你:返回对象的类型。把程序的运行结果写在上面空白处。我猜你写对的概率是多少呢?可能性是random.random(),见证奇迹的时刻到了,
3 <class 'int'>
(3,) <class 'tuple'>
0.08515720786212122
看到了吧,加不加逗号不一样,数据类型都不同,一个是整型int,一个是元组类型tuple。
元组中的元素值是不允许修改的,但我们可以对元组进行连接。
tup1 = (12, 34.56)
tup2 = ('abc', 'xyz')
# 以下修改元组元素操作是非法的。
# tup1[0] = 100
# 创建一个新的元组
tup3 = tup1 + tup2
print(tup3) #输出 (12, 34.56, 'abc', 'xyz')
与字符串一样,元组之间可以使用 + 号和 * 号进行运算,也就是说元组可以组合和复制,运算后会生成一个新的元组。

元组也是一个序列,所以我们可以访问元组中的指定位置的元素,也可以截取索引中的一段元素,如下所示:
tup=('乐高','枪模','和平精英')
tup [2] '和平精英' #读取第三个元素
tup [-2] '枪模' #反向读取,读取倒数第二个元素
tup [1:] ('枪模','和平精英') #截取元素,从第二个开始后的所有元素。
元组的主要作用是保护数据安全,因为元组创建后不能修改。元组还可以接收一个函数的多个返回值,这个我们在函数章节中已经学过,元组还有一个用处,就是作为自动组包/解包的默认类型(好高深的概念啊)。其实有些东西当我们不了解时觉得很深奥,但是如果你学会了,“天空飘来五个字儿那都不是事”。我曾经特别佩服光头强,因为他会开车而我不会。但是当我学会了开车(现在又不会开车了,只是有一个驾照而已),感觉也就那么回事。光头强还会打网球,坐在躺椅上带着太阳镜享受假期,在李老板的压榨下依然能快乐的生活,因此我仍然喜欢他。

言归正传,我们谈谈自动组包/解包。举个例子就明白了。
# 如果有多个变量赋值给一个变量时,会把多个值自动组包成元组
info = 10, 20
print(type(info))
# 如果等号左边的变量个数和元组中元素的个数相同时,元组会自动解包,就是一一对应去赋值
tuple = (20, 30)
a, b = tuple
print(a)
print(b)
怎么样简单吧!顺便考虑一下,如何交换两个变量的值?先自己想想,后面提供三个方法。
#交换两个数
a = 10 # 把a的值变为20
b = 20 # 把b的值变为20
#方法1
temp = a
a = b
b = temp
#方法2
a = a + b
b = a - b
a = a - b
#方法3
a, b = b, a