元组
摘要:
01.元组的概念与特点
1.1元组的定义
元组(TUPLE)是一种不可变序列。与列表的操作方式基本一致,所以在操作元组时,把元组当成是一个不可变的列表可以了,但在某些方面存在差异。
1.2元组与列表的区别
元组中不能使用会修改对象的方法,例如索引赋值、切片赋值、 Delete 操作以及 Insert 、 Append 等方法。而索引、成员判断(in、not in)等操作在元组中均可使用。一般希望数据不改变时,就使用元组,其余情况都使用列表。
02.元组的创建与表示
2.1创建空元组
创建空元组使用小括号,即()。例如,执行 My_tuple = (),再通过 Type(my_tuple) 查看其类型,结果为 Class tuple ,表示创建成功。
代码:
my_tuple=() print(my_tuple)
执行结果:显示括号
代码2:
my tuple=() //创建了一个空元素 print(my_tuple,type(my_tuple))
执行结果:
2.2创建有元素的元组
创建包含元素的元组同样使用小括号,元素之间用逗号分隔。例如, My_tuple = (1, 2, 3, 4, 5),创建了一个包含五个元素的元组。打印该元组,结果为(1, 2, 3, 4, 5)。
代码:
my tuple=() my_tuple=(1,2,3,4,5) print(my_tuple)
执行结果:
但是注意不能这么写my_tuple[3]=10
执行:报错,元组是不可变对象,不能尝试为元组中的元素重新赋值。
2.3省略括号的情况
当元组非空时,括号可以省略。例如, My_tuple = 10, 20, 30, 40,这也是一个合法的元组定义方式。一般情况下都可以不写括号,写括号的好处是代码结果清楚一点,不写也是一个元组。
代码:
my_tuple =10,20,30,40 print(my_tuple ,type(my_tuple))
执行结果
但需要注意的是,如果元组不是空元组,它里边至少要有一个逗号,对于只有一个元素的元组,即使元素后有逗号,若不使用小括号,Python也无法识别其为元组。例如,40(无括号)表示整数,而(40,)(有括号且元素后有逗号)才表示元组。
my_tuple =10,20,30,40 my_tuple =40, print(my_tuple ,type(my_tuple))
执行结果:
03.元组的操作与特性
3.1索引操作
可以通过索引获取元组中的元素。例如,对于元组 My_tuple = (1, 2, 3, 4, 5),使用 My_tuple [3]可以取出元素4。但需要注意的是,不能对元组进行索引赋值,否则会报错,提示 Tuple object does not support item assignment ,因为元组是不可变对象。
代码:
my_tuple=(1,2,3,4,5) print(my_tuple[3])
执行结果
3.2切片操作
元组的切片操作与列表类似。例如, My_tuple [1:3]可以获取元组中索引从1到2(不包括3)的元素。
3.3解包操作
(1)基本解包:将元组中的每个元素分别赋值给一个变量,称为解包或解构。例如,a, b, c, d = My_tuple ,其中 My_tuple 包含四个元素,执行后a、b、c、d分别被赋值为元组中的对应元素。
代码:
my_tuple=10,20,30 ,40 a,b,c,d=my_tuple print("a =”,a) print(“b =”b) print(“c =”c) print(“d=”d)
执行结果:
(2)交换变量值:利用元组的解包可以方便地交换两个变量的值。例如,a, b = b, a,无需借助中间变量即可实现变量值的交换。实际上是把a赋值给b,b赋值给a
代码2:
a=100 b=300 a,b=b,a print(a,b)
执行结果:
这时候就发现a变成300,b变成100,在这里可以利用解包的特点交换两个变量的值,这是一个比较典型的用法。
(3)变量数量与元素数量不一致的情况:
变量数量少于元素数量:可以在变量前添加星号(),表示该变量将获取所有剩余元素,最后返回的是列表形式。
代码:
my_tuple=10,20,30,40 a , b=my_tuple //发现里面是4个值,但只给了两个变量 print(a , b)
执行结果:报错
代码2:假如一百个值,只想要前十个,可以在变量前添加星号*,表示该变量将获取所有剩余元素
my_tuple=10,20,30,40 a,b,*c=my_tuple print(a .b) print('c =‘.c)
执行结果:注意在对一个元组进行解包时,变量的数量必须和元组中的元素的数量一致
例如,a, b, c = My_tuple ,其中 My_tuple 有四个元素,执行后a被赋值为第一个元素,b被赋值为第二个元素,c为一个包含剩余元素的列表。
星号位置可调整:星号可以放在不同位置,但只能有一个星号变量。例如,a, b, c = My_tuple 也是合法的,此时a被赋值为第一个元素,c被赋值为最后一个元素,中间的元素存储在列表b中。
my_tuple=10,20,30,40 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)
执行结果:
错误情况:不能同时出现两个及以上*变量,否则会报语法错误。
04.元组与其他序列的关系
元组的操作方式与列表基本相同,包括遍历、索引、切片等。而且解包操作并非元组独有,对于其他序列(如列表、字符串等)也可以进行解包操作。但是元组不是用得这么多,主要还是以列表为主。例如,对于列表a,b,*c=[1,2,3,4,5,6,7]或字符串a,b,*c='hello world’都可以进行解包。