Python里面的第二个数据类型叫元组,英文叫tuple,至于这是怎么翻译的就不知道了。。。总之大家都是这么叫的。这货有什么用呢
上一节介绍了列表,知道了列表就是一个有序的数据存储的结构,并且可以根据用户的需要改变内部的值
今天这个家伙的和那个差不多,也是有序的结构,但是不同的就是,一旦他建立了,就不能改变了。所以他适用于一个不需要经常改变的场合,比如一个车间有6条生产线,由于他们不会经常改变,那只需要把6条生产线的名称组成一个元组,调用它就可以了。
创建元组
首先看看元组怎么创建,从形式上看,就是所有的元素都放在一个小括号()里面,
test_tuple=(1,2,3,4,5)print(test_tuple,type(test_tuple))结果:(1, 2, 3, 4, 5) 'tuple'>
当然和列表一样,其内部的元素也可以是不同的类型
特殊的就是,如果创建的元组只有一个元素,需要在后面添加逗号,例子如下
test_tuple1=(1)test_tuple2=(1,)print(type(test_tuple1),type(test_tuple2))结果:
一个是int类型,一个是tuple类型
除了直接赋值以外,Python自带的函数也可以将字符串、列表、range等对象转换成元组类型,见例子
#将字符串转换成元组tup1 = tuple("hello world")print(tup1)结果:注意里面的空格('h', 'e', 'l', 'l', 'o', ' ', 'w', 'o', 'r', 'l', 'd')
#将列表转换成元组list1 = ['a', 'b', 'c ','d']tup2 = tuple(list1)print(tup2)结果:('a', 'b', 'c ', 'd')
#将字典转换成元组dict1 = {'a':10, 'b':20, 'c':30}tup3 = tuple(dict1)print(tup3)结果:只将字典的key取了出来('a', 'b', 'c')
#将区间转换成元组range1 = range(1, 5)tup4 = tuple(range1)print(tup4)
访问元组的元组这个和上一节列表的一样,这里不单独介绍。如果要查找某个元素在不在元组里面,或者索引是多少,方法也是和列表一样的,如
tup1 = (1, 2, 3, 4)1 in tup1结果:True
tup1.index(1)输出:0
修改元组
前面我们已经说过,元组是不可变序列,元组中的元素不能被修改,所以我们只能创建一个新的元组去替代旧的元组。
比如下面
tup1 = (1, 2, 3, 4)tup2 = (5, 6, 7)print(tup1+tup2)tup1=tup1+tup2print(tup1)print(tup2)结果:(1, 2, 3, 4, 5, 6, 7)(1, 2, 3, 4, 5, 6, 7)(5, 6, 7)
也就是说只能重新赋值,不能对里面的元素进行修改
除了+,还可以使用*
tup1 = (1, 2, 3, 4)tup1=tup1*3print(tup1)结果:(1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4)
元组也有几个实用的函数,可以查看长度、最大值和最小值等
tup1 = (1, 2, 3, 4)print(len(tup1))print(max(tup1))print(min(tup1))结果411
要说这家伙有什么用。。。最有用的就是可以当作函数的返回值吧。。。如
def squire_and_cube(x): return (x*x,x*x*x)a=squire_and_cube(2)print(type(a))print(a[0],a[1])结果:<class 'tuple'>4 8