1定义
tuple(元组)也是一种顺序结构的数据类型,定义一个空元组的方法用英文小括号:
变量名=()
t = ()
定义一个包含了多个元素的元组在小括号中用逗号分隔开各个元素:
源码print(‘\n定义tuple类型:’)
t1 = (1,2,3,4) #定义了一个包含4个整型数据的元组
t2 = (1.1,2.2,3.3,4.4,5.5) #定义一个包含5个浮点数据的元组
t3 =(‘www’,’juzicode’,’com’) #定义一个包含了3个字符串数据的元组print(‘t1:’,t1)
print(‘t2:’,t2)
print(‘t3:’,t3)
结果定义tuple类型:
t1: (1, 2, 3, 4)
t2: (1.1, 2.2, 3.3, 4.4, 5.5)
t3: (‘www’, ‘juzicode’, ‘com’)
前面的定义中元组元素都是同一种数据类型,也可以定义包含了多种数据类型的元组:
源码print(‘\n定义tuple类型包含多类型元素:’)
t1 = (1,2.2,’’) #定义了一个包含3个混合元素的元组
print(‘t1:’,t1)
结果定义tuple类型包含多类型元素:
t1: (1, 2.2, ‘’)
定义tuple的时候,tuple中还可以嵌套tuple:
源码print(‘\n定义tuple类型包含多类型元素和元组的元组:’)
t1 = (1,2.2,’’,(1,2,3)) #定义了一个包含3个混合元素加一个元组的元组print(‘t1:’,t1)
结果定义tuple类型包含多类型元素和元组的元组:
t1: (1, 2.2, ‘’, (1, 2, 3))
在tuple中包含字典,集合,列表这些数据类型。
2计算tuple长度
计算tuple长度就是计算tuple中包含元素的个数,使用的函数为len(),和计算字符串长度的函数是一样。
源码print(‘\n计算tuple长度:’)
t1 = (1,2,3,4) #定义了一个包含4个整型数据的元组
t2 = (1.1,2.2,3.3,4.4,5.5) #定义一个包含5个浮点数据的元组
t3 =(‘www’,’juzicode’,’com’) #定义一个包含了3个字符串数据的元组print(‘t1:’,t1)
print(‘t2:’,t2)
print(‘t3:’,t3)
print(‘t1长度:’,len(t1))
print(‘t2长度:’,len(t2))
print(‘t3长度:’,len(t3))
结果计算tuple长度:
t1: (1, 2, 3, 4)
t2: (1.1, 2.2, 3.3, 4.4, 5.5)
t3: (‘www’, ‘juzicode’, ‘com’)
t1长度: 4
t2长度: 5
t3长度: 3
从上面的例程可以看出len()函数计算的是tuple元素的个数,在字符串tuple中并不是获取到这3个字符串元素的总字符个数。
【实验】思考并动手实验下,t1 = (1,2.2,’’,(1,2,3)) 这种tuple中包含tuple,像这个tuple长度会是多少,计算出来的长度是否会将tuple内部的tuple拆分出来呢?
3索引-使用tuple元素
因为tuple是一种有序储存的数据类型,可以像字符串那样根据下标索引查找元素,其下标是从0开始编号的,比如t1 = (1,2.2,’’,(1,2,3))这个tuple,其第0个元素t1[0]是1,第1个元素是2.2,第2个元素是’’,第3个元素是(1,2,3),可以这么使用:
源码print(‘\n下标索引使用tuple:’)
t1= (1,2.2,’’,(1,2,3))#定义了一个包含3个混合元素加一个元组的元组print(‘t1:’,t1)
print(‘t1[0]:’,t1[0])
print(‘t1[1]:’,t1[1])
print(‘t1[2]:’,t1[2])
print(‘t1[3]:’,t1[3])
结果下标索引使用tuple:
t1: (1, 2.2, ‘’, (1, 2, 3))
t1[0]: 1
t1[1]: 2.2
t1[2]:
t1[3]: (1, 2, 3)
如果索引值大于其长度,将会出现IndexError错误,提示索引值超出了范围:
tuple的索引值也可以类似字符串,使用负数索引值,-1表示最后一个元素,以此类推:
源码print(‘\n负值下标索引使用tuple:’)
t1= (1,2.2,’’,(1,2,3))#定义了一个包含3个混合元素加一个元组的元组
print(‘t1:’,t1)
print(‘t1[-1]:’,t1[-1])
print(‘t1[-2]:’,t1[-2])
print(‘t1[-3]:’,t1[-3])
print(‘t1[-4]:’,t1[-4])
结果负值下标索引使用tuple:
t1: (1, 2.2, ‘’, (1, 2, 3))
t1[-1]: (1, 2, 3)
t1[-2]:
t1[-3]: 2.2
t1[-4]: 1
4切片
tuple的切片和字符串的切片使用方法是一样的,请参考/archives/182中字符串切片的内容:
源码print(‘\ntuple切片:’)
t2= (0,1,2,3,4,5,6,7,8,9,10)
print(‘t2:’,t2)
print(‘t2[5:8]:’,t2[5:8])
结果tuple切片:
t2: (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
t2[5:8]: (5, 6, 7)
5在tuple中添加元素或者修改值
不好意思,没有这种骚操作,真要有这种操作,tuple的用处与list就完全重叠了。tuple定义后是不可以修改的,这里我们假设要修改t2= (0,1,2,3,4,5,6,7,8,9,10)的第3个元素的值,发现抛异常了,提示TypeError,tuple类型是不支持再赋值的。
【实验】tuple是否可以向list一样append和extend?