元组是一种不可改变的序列,它里面的内容是不可以被改变的。元组属于序列,它和列表相似,最主要的区别就是元组创建之后就不能再对里面的元素进行增删操作。
元组的一般形式为:
1 | (1,2,3,4,5,6) |
它与列表结构的区别在于它使用小括号‘()’,里面每个元素之间用‘,’隔开,在元组中同样可以存放整数、字符串、列表等类型的内容。
1. 创建元组和删除元组
创建可以采用多种方式。
1) 创建空元组
创建空元组和列表方式一样,语法格式为:
1 | my_tuple = () |
下面看个例子:
123 | my_tuple = () #创建空元组 print (my_tuple) #输出 print ( '数据类型' , type (my_tuple)) #看一下它的类型 |
输出结果:
12 | () 数据类型 |
2) 直接赋值创建元组
赋值创建元组的方式也相对简单,大家学过列表之后学习后面的都很方便,一定要好好掌握列表中的相关内容。
直接赋值的语法格式:
1 | my_tuple = (value1,value2,value3,value4,value5) |
my_tuple为列表名,value1~value5位元组中的各个元素,可以是整数、字符串或者列表,看下面的例子:
12 | my_tuple = ( 'www.dotcpp.com' , '123456' ,[ 1 , 2 , 3 , 4 , 5 , 6 ]) #创建元组并直接进行赋值 print (my_tuple) #输出 |
输出结果:
1 | ( 'www.dotcpp.com' , '123456' , [ 1 , 2 , 3 , 4 , 5 ]) |
3) 使用range()函数创建
使用range()函数我们可以创建具有一定数据规模的元组。看下面例子:
12 | my_tuple = tuple ( range ( 1 , 100 , 3 )) #range(1,100,3)创建了一个1-100之间步长为3的序列,最后使用tuple()强制转换为元组类型 print (my_tuple) #输出 |
输出为:
12 | ( 1 , 4 , 7 , 10 , 13 , 16 , 19 , 22 , 25 , 28 , 31 , 34 , 37 , 40 , 43 , 46 , 49 , 52 , 55 , 58 , 61 , 64 , 67 , 70 , 73 , 76 , 79 , 82 , 85 , 88 , 91 , 94 , 97 ) |
2. 删除元组
删除元组的方式和列表相同,使用del语句直接进行删除,语法形式为:
1 | del my_tuple |
如下例:
123456 | >>> my_tuple = tuple ( range ( 1 , 100 , 3 )) #range(1,100,3)创建了一个1-100之间步长为3的序列,最后使用tuple()强制转换为元组类型 >>> del my_tuple #删除元祖 >>> print (my_tuple) #这时候再输出就会报错 Traceback (most recent call last): File "" , line 1 , in
NameError: name 'my_tuple' is not defined |
3. 访问元组元素
我们在访问元组元素的时候同样是根据索引位置去找到所要访问的元素。
我们先创建一个元组 my_tuple = (‘a’,’b’,’c’,’d’)
然后看一下代码:
12 | my_tuple = ( 'a' , 'b' , 'c' , 'd' ) print (my_tuple[ 0 ],my_tuple[ 1 ],my_tuple[ 2 ],my_tuple[ 3 ]) |
输出结果:
1 | a b c d |
看一下对应表格:
元组 | a | b | c |
索引 | 0 | 1 | 2 |
4. 元组元素的修改
因为元组是不可变的数列,所以我们不可以对其元素进行修改,如果采用列表形式直接通过索引值进行修改的话会出现错误信息。
12345 | >>> my_tuple = ( 1 , 2 , 3 , 4 , 5 , 6 ) >>> my_tuple[ 2 ] = 6 Traceback (most recent call last): File "" , line 1 , in
TypeError: 'tuple' object does not support item assignment |
所以我们如果要修改元组中的元素就要采用其他的方法。通常会采用两种方式,一种是重新赋值法,一种是类型转换法。
1) 重新赋值法
1234 | >>> mytuple = ( 11 , 22 , 33 , 44 , 55 , 66 , 77 ) >>> mytuple = ( 1 , 2 , 3 ) >>> mytuple ( 1 , 2 , 3 ) |
这样的覆盖方式可以很简单的修改了元组中的元素,当然这种方式的使用范围受到限制,因此我们在大多数情况下可以采用第二种。
2) 类型转换法
如果要对元组的第一百元素进行修改,那么采用上面方式就显得十分麻烦,因此可以采用类型转换,先把元组转换成其他数据类型,例如转换为列表,一般情况下我们 都是转成列表进行操作。
看下面例子:
12345678 | my_tuple = ( 1 , 2 , 3 , 4 , 5 , 6 ) #先创建一个元组 my_tuple = list (my_tuple) #把元组转换为列表形式 print (my_tuple, type (my_tuple)) #输出看一下现在的数据和类型 my_tuple.insert( 3 , '插入新元素' ) #在列表类型下进行元素的插入或更改或删除 my_tuple[ 3 ] = [ '元素的更改' ] my_tuple.pop() #元素的删除,pop()自动删除最后一项,也就是对应的6 my_tuple = tuple (my_tuple) #最后转换为元组形式 print (my_tuple, type (my_tuple)) #打印 |
输出结果:
12 | [ 1 , 2 , 3 , 4 , 5 , 6 ] ( 1 , 2 , 3 , [ '元素的更改' ], 4 , 5 ) |
5. 总结
元组相对于列表缺少了一些功能,但元组也有它的独特之处,首先元组的性能是比较高的,处理元组的速率要快于列表, 其次是它非常安全,当数据规模较大的时候,使用元组能保障你的数据不会被修改,确保了安全性,在存储方面是一个很好的选择。