python序列之元组详解
与列表类似,元组也是由任意元素组成的序列,不同的是元组是不可变的,意味着一旦元组被定义将无法再进行修改操作,因此它显得比较古板。
元组的创建:
可以使用() 创建元组
empty = () #定义了一个空元组
当元组中仅有一个元素时,也需要将元素后面加上逗号,例如:
tuple3 = (1,) #定义了一个只包含数字1的元组,1后面必须加上逗号才表示元组
tuple4 = 1, #甚至,不需要括号,仅仅有逗号就行
当元组有多个元素时,最后一个元素后面不用再加逗号
tuple1 = (1,7,4) #定义了一个纯数字的普通元组
tuple2 = (2,'python','java',5) #定义了一个具有数字和字符串的混合元组
tuple()函数可以将其他类型数据转化为元组
>> a=['python','java']
>> tuple(a)
('python','java')
元组的访问
与列表一样,都可以通过下标的形式访问:元组名[下标值]
>>tuple4 = (1,5,9)
>> tuple4[1]
5
元组的解包
可以将元组赋值给多个变量,这个过程被称作元组解包
>> langue = ('python','java','php')
>> a,b,c = langue
>> a
'python'
>> b
'java'
>> c
'php'
不允许对元组的元素进行修改
>> tuple4[1] = 4 #将会报语法错误。
TypeError: 'tuple' object does not support item assignment
元组使用拼接操作符
虽然元组本身不允许修改和删除,但是和字符串一样,我们可以对元组的元素进行修改并重新生成一个新的元组
tuple5 = ('python','java','php') #定义一个纯字符串的元组
tuple5[:2] +("flask",)+ tuple5[2:] #元组分片形式和拼接操作,生成在原元组第一位上插入'flask'元素的新元组
('python','flask','java','php')
可以通过del语句直接删除一个元组,但是不允许利用del删除元组的一个元素
tuple6 = 1,3
del tuple6
当然也可以采取变通的方法去掉元组的一个元素,例如:
tuple7 = ('python','flask','java','php') #定义一个纯字符串的元组
tuple7 = tuple7[:1] + tuple7[2:] #通过元组分片形式和拼接操作,生成了去掉了'醉酒青牛'元素的新元组并赋值给tuple7
tuple7= ('python','java','php')
注意:原先的元组还存在,只是已经不再叫tuple7,它会被Python内存垃圾回收
元组与列表
因为元组一旦创建就无法修改,元组的方法函数比列表要少很多,既然列表更加灵活,那么为什么不都使用列表代替呢?
元组其实有以下优点
- 相同的元素,元组所占的空间较小
- 防止被随意或者无意中修改序列
- 函数的参数是以元组的形式传递的
- 输出是,如果同时输出多个结果,会以元组的形式输出
- 可以将元组用作字典的键