Python基础教程2d–数据类型-tuple(元组)

原文链接: http://www.juzicode.com/archives/282

定义

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中包含字典,集合,列表这些数据类型。

计算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拆分出来呢?

索引-使用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

 切片

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)

在tuple中添加元素或者修改值

不好意思,没有这种骚操作,真要有这种操作,tuple的用处与list就完全重叠了。tuple定义后是不可以修改的,这里我们假设要修改t2 = (0,1,2,3,4,5,6,7,8,9,10) 的第3个元素的值,发现抛异常了,提示TypeError,tuple类型是不支持再赋值的。

【实验】tuple是否可以向list一样append和extend?

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注