不可变序列:元组 | Python从入门到精通:进阶篇之十一

简介: 元组是一个不可变序列。它的操作方式基本上和列表是一致的。

上一节:初识range函数

概述

元组(tuple)是一个不可变序列。它的操作方式基本上和列表是一致的。所以在操作元组的时候将其当做一个不可变的列表就可以了。

那什么时候用元组呢?

当我们希望我们的数据不改变的时候就需要使用元组,其他情况用列表就可以了。所以元组的使用范围是非常有限的,但是还是有必要学习一下。

用法

使用()来创建元组。

#创建元组
my_tuple=() #创建了一个空元组
print(my_tuple,type(my_tuple))

执行结果为:
image.png
上面我们创建了一个空元组,接下来演示一下如何创建一个有内容的元组:

my_tuple=(1,2,3,4,5) #创建了一个5元素的元组
print(my_tuple)

执行结果为:
image.png
可以看到此时就将元组的内容进行输出了。
也可以结合索引去操作:

my_tuple=(1,2,3,4,5) #创建了一个5元素的元组
print(my_tuple[3])

执行结果为:
image.png
但是注意元组是不可变对象,不能尝试给元组中的元素进行重新赋值。

当元组不是空元组的时候,()可以省略:

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

执行结果为:
image.png

可以看到,类型仍然是一个元组,而且形式上是自动加了()的。

如果元组不是空元组,至少要有一个“,”,即使是一个元素,有没有()都是一样的,要有逗号:

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

执行结果为:
image.png
有了这个逗号,才可以被系统识别为一个元组。上述的代码里面如果不加逗号,会被系统认为是int类型的一个数据。可以自己测试一下。
image.png

还有一种用法:元组的解包(解构),就是指将元组当中的每一个元素都赋值给一个变量。

my_tuple=10,20,30,40
a,b,c,d=my_tuple
print("a=",a)
print("b=",b)
print("c=",c)
print("d=",d)

执行结果为:
image.png
这个是非常方便的一个用法,常用于交换两个变量的值。

a=100
b=300
print(a,b)
a,b=b,a #利用元组的解包交换两个数字的值
print(a,b)

执行结果为:
image.png
可以看到这是非常容易的,不像其他语言中那样还要借助一个中间变量来实现。

这里面还有一种情况需要注意,如果重新赋值的数量对应不上的话是会报错的,但是如果数量太多是很麻烦的,就可以这么处理下:

my_tuple=10,20,30,40
a,b,*c=my_tuple
print("c=",c)

执行结果为:
image.png
可以看到c变成一个列表了。

总结:在对一个元组进行解包时,变量的数量必须和元组中元素的数量一致,也可以在变量前面加入一个*,这样他将会获取到元组中所有剩余的元素,并返回一个列表。
如果*是在中间变量的前面,那么将获取中间元素的值,返回列表:

my_tuple=10,20,30,40
a,*b,c=my_tuple
print("a=",a)
print("b=",b)
print("c=",c)

执行结果为:
image.png
同理,放到第一个变量前面也是可以的。
但是注意只可以有一个*,不可以同时出现两个及以上。
解包的操作对于字符串和列表也是同样适用的。
image.png

配套视频点击此处查看

获取更多内容,请订阅Python学习站官方技术圈!

相关文章
|
4天前
|
存储 程序员 API
Python 入门指南(五)(4)
Python 入门指南(五)
12 1
|
1天前
|
网络协议 网络架构 Python
Python 网络编程基础:套接字(Sockets)入门与实践
【5月更文挑战第18天】Python网络编程中的套接字是程序间通信的基础,分为TCP和UDP。TCP套接字涉及创建服务器套接字、绑定地址和端口、监听、接受连接及数据交换。UDP套接字则无连接状态。示例展示了TCP服务器和客户端如何使用套接字通信。注意选择唯一地址和端口,处理异常以确保健壮性。学习套接字可为构建网络应用打下基础。
18 7
|
2天前
|
Python
10个python入门小游戏,零基础打通关,就能掌握编程基础_python编写的入门简单小游戏
10个python入门小游戏,零基础打通关,就能掌握编程基础_python编写的入门简单小游戏
|
2天前
|
存储 索引 Python
【python学习】列表、元组、字典、集合,秋招是不是得到处面试
【python学习】列表、元组、字典、集合,秋招是不是得到处面试
|
4天前
|
Python 索引 C语言
Python3从零基础到入门(2)—— 运算符-3
Python3从零基础到入门(2)—— 运算符
|
4天前
|
Python
Python3从零基础到入门(2)—— 运算符-2
Python3从零基础到入门(2)—— 运算符
Python3从零基础到入门(2)—— 运算符-2
|
4天前
|
Python C语言 存储
Python3从零基础到入门(2)—— 运算符-1
Python3从零基础到入门(2)—— 运算符
Python3从零基础到入门(2)—— 运算符-1
|
4天前
|
存储 C语言 Python
|
4天前
|
Python Windows
|
4天前
|
NoSQL 测试技术 API
Python 入门指南(七)(4)
Python 入门指南(七)
9 0