原文链接: http://www.juzicode.com/archives/282
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,’juzicode.com’) #定义了一个包含3个混合元素的元组 print(‘t1:’,t1) |
结果 | 定义tuple类型包含多类型元素: t1: (1, 2.2, ‘juzicode.com’) |
定义tuple的时候,tuple中还可以嵌套tuple:
源码 | print(‘\n定义tuple类型包含多类型元素和元组的元组:’) t1 = (1,2.2,’juzicode.com’,(1,2,3)) #定义了一个包含3个混合元素加一个元组的元组print(‘t1:’,t1) |
结果 | 定义tuple类型包含多类型元素和元组的元组: t1: (1, 2.2, ‘juzicode.com’, (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,’juzicode.com’,(1,2,3)) 这种tuple中包含tuple,像这个tuple长度会是多少,计算出来的长度是否会将tuple内部的tuple拆分出来呢?
3 索引-使用tuple元素
因为tuple是一种有序储存的数据类型,可以像字符串那样根据下标索引查找元素,其下标是从0开始编号的,比如t1 = (1,2.2,’juzicode.com’,(1,2,3))这个tuple,其第0个元素t1[0]是1,第1个元素是2.2,第2个元素是’juzicode.com’,第3个元素是(1,2,3),可以这么使用:
源码 | print(‘\n下标索引使用tuple:’) t1 = (1,2.2,’juzicode.com’,(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, ‘juzicode.com’, (1, 2, 3)) t1[0]: 1 t1[1]: 2.2 t1[2]: juzicode.com t1[3]: (1, 2, 3) |
如果索引值大于其长度,将会出现IndexError错误,提示索引值超出了范围:
tuple的索引值也可以类似字符串,使用负数索引值,-1表示最后一个元素,以此类推:
源码 | print(‘\n负值下标索引使用tuple:’) t1 = (1,2.2,’juzicode.com’,(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, ‘juzicode.com’, (1, 2, 3)) t1[-1]: (1, 2, 3) t1[-2]: juzicode.com t1[-3]: 2.2 t1[-4]: 1 |
4 切片
tuple的切片和字符串的切片使用方法是一样的,请参考http://www.juzicode.com/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?