开发者学堂课程【Python 语言基础 2:列表、元组、字典、集合:元组】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/600/detail/8712
元组
l 元组tuple
元组是一个不可变的序列
它的操作的方式基本上和列表是一致的
所以在操作元组时,就可以把元组当成是一个不可变的列表
一般当我们希望数据不改变时,就使用元组,其余情况都使用列表.
l 创建元组
使用( )来创建元组
my_tuple = ( ) #创建了一个空元组
print(my_tuple )
效果如下:
再改为 print(my_tuple, type(my_tuple) ) #class ‘ tuple ’
my_tuple = (1, 2, 3, 4, 5) #创建了一个5个元素的元组
print(my_tuple[ ])
再改为 print(my_tuple[ 3 ])
注意不能写 my_tuple[3] = 10, TypeError: 'tuple' object does not support item assignment
元组是不可变对象,不能尝试为元组中的元素重新赋值
当元组不是空元组时,括号可以省略
my_tuple = 10,20, 30,40
print(my_tuple, type(my_tuple))
如果元组不是空元组,其中至少要有一个,
若 my_tuple = 40
所以改为 my_tuple = 40,
l 特殊用法:元组的解包〔解构)
解包指就是将元组当中每一个元素都赋值给一个变量
my_tuple =10 , 20 , 30 , 40
print(my_tuple)
改为 my_tuple =10 , 20 , 30 , 40
a, b, c, d = my_tuple
print(“a = ”, a)
print(“b = ”, b)
print(“c = ”, c)
print(“d = ”, d)
比如输入
a = 100
b= 100
print(a, b)
交互 a 和 b 的值,这时我们就可以利用元组的解包
a , b = b , a
print(a, b)
另一种用法:
比如输入:
my_tuple = 10 , 20 , 30 , 40
a , b = my_tuple
print(a , b)
改为 a , b , c , d = my_tuple
如果 100 变量只需要前 十 个,不需要全写,只需要 a , b , *c= my_tuple
那么 c 是什么效果呢?先打印下 c,print(‘ c = ’ , c)
所以注意:在对一个元组进行解包时,变量的数量必须和元组中的元素的数量一致
也可以在变量前添加一个 *,这样变量将会获取元组中所有剩余的元素
也可以输成:a , *b , c= my_tuple
print( ‘a = ’ , a)
print( ‘b = ’ , b)
print( ‘c = ’ , c)
*a , b , c= my_tuple
print( ‘a = ’ , a)
print( ‘b = ’ , b)
print( ‘c = ’ , c)
但是不能同时出现两个或以上的 * 变量,比如
*a , *b , c= my_tuple SyntaxError: two starred expressions in assignment
此外,不光是元组可解包,列表还有字符串都可以进行解包
a , b , *c = [1, 2, 3, 4, 5, 6, 7]
a , b , *c = ‘hello world’