python基础——元组 tuple

别等时光非礼了梦想. 提交于 2019-11-29 14:03:59

一、什么是元组

元组是一个不可变的序列
它的操作的方式基本上和列表是一致的
所以你在操作元组时,就把元组当成是一个不可变的列表就ok了
一般当我们希望数据不改变时,就使用元组,其余情况都使用列表

二、创建元组

2.1、使用 () 来创建元组

创建空元组

my_tuple = () 

print(my_tuple,type(my_tuple)) 

运行结果:

<class 'tuple'>

创建了一个5个元素的元组

my_tuple = (1,2,3,4,5) 
print(my_tuple,type(my_tuple))

运行结果:

(1, 2, 3, 4, 5) <class 'tuple'>

元组是不可变对象,不能尝试为元组中的元素重新赋值

my_tuple[3] = 10 

print(my_tuple[3])

运行报错了:

TypeError: 'tuple' object does not support item assignment

2.2、省略括号,创建元组

注意事项:

  • 当元组不是空元组时,括号可以省略;

  • 省略括号后,元组只有一个值时,它边至少要有一个 ,

my_tuple = 10,20,30,40
print(my_tuple , type(my_tuple))

运行结果:

(10, 20, 30, 40) <class 'tuple'>

只有一个值时,必须加上逗号(,)

my_tuple1 = 40
my_tuple2 = 40,
print(my_tuple , type(my_tuple))  
print(my_tuple2 , type(my_tuple2))

运行结果:

40 <class 'int'>
(40,) <class 'tuple'>

说明:不加逗号是int, 加上逗号是元组。

三、元组的解包(解构)

解包指就是将元组当中每一个元素都赋值给一个变量。

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 = 10
b = 20
c = 30
d = 40

3.1、利用元组的解包,交互a 和 b的值

a = 100
b = 300

print('交换值前:','a=',a ,' b=', b)

a , b = b , a

print('交换值后:','a=',a ,' b=', b)

运行结果:

交换值前: a= 100  b= 300
交换值后: a= 300  b= 100

在对一个元组进行解包时,变量的数量必须和元组中的元素的数量一致

3.2、在变量前边添加一个*,变量将会获取元组中所有剩余的元素

最后一个变量加*

my_tuple = 10 , 20 , 30 , 40

a , b , *c = my_tuple

print('a =',a)
print('b =',b)
print('c =',c)

运行结果:

a = 10
b = 20
c = [30, 40]

中间变量加*

a , *b , c = my_tuple

print('a =',a)
print('b =',b)
print('c =',c)

运行结果:

a = 10
b = [20, 30]
c = 40

*第一个变量加 **

*a , b , c = my_tuple

print('a =',a)
print('b =',b)
print('c =',c)
a = [10, 20]
b = 30
c = 40

注意事项:

不能同时出现两个或以上的*变量,会抛异常:

*a , *b , c = my_tuple

异常:

SyntaxError: two starred expressions in assignment

3.3、列表的解包(与元组无关):

a , b , *c = [1,2,3,4,5,6,7]

print('a =',a)
print('b =',b)
print('c =',c)

3.4、字符串的解包:

a , b , *c = 'hello world'

print('a =',a)
print('b =',b)
print('c =',c)
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!