一.什么是元组
元组(tuple)是关系数据库中的基本概念,关系是一张表,表中的每行(即数据库中的每条记录)就是一个元组,每列就是一个属性。 在二维表里,元组也称为行。
除了列表,元组也是Python语言提供的内置函数数据结构之一
二.元组与列表的区别
1.元组用小括号表示(列表用中括号表示)
t = ('Python',18,True)
print(t)
('Python', 18, True)
小括号是可以省略的。
t = 'Python',18,True
print(t)
('Python', 18, True)
空元组的两种表示方式:
print(())
print(tuple()) # 调用tuple类
()
()
2.元组是不可变类型(列表是可变类型)
为什么要设计元组这样的不可变类型呢?因为一旦创建了不可变类型的对象,对象内部的所有数据就不能被修改了,这样就避免了由于修改数据导致的错误。此外,对于不可变类型的对象,在多任务环境下同时操作对象时不需要加锁。因此,在程序中尽量使用不可变类型的对象。
对于元组中可变类型的数据,元组中存储的是其引用(在内存中的地址),因此,存储的引用是不能被改变的,也就说,不能再引用任何其它对象。但是,引用所指向的可变类型的数据是可以被改变的。
from IPython.display import Image
Image(filename = 'F:/Jupyter/Python/yuanzu.jpg', width=300, height=150)
![](https://i-blog.csdnimg.cn/blog_migrate/7e8cd139fa7b8e4432d0570cecc5166e.jpeg)
t = (5,[1,3],8)
# t[1] = 7 不可以修改元组的引用
t[1][0] = 7 #但可以修改元组中引用的数据
print(t)
(5, [7, 3], 8)
三.只包含一个元素的元组
t = (18)
print(t)
print(type(t)) #打印t的类型是int,说明t不是tuple元组
18
<class 'int'>
元组中至少要包含一个逗号,即使元组只有一个元素,否则,小括号会被看作是数学公式中的小括号。
t = (18,)
print(t)
print(type(t))
(18,)
<class 'tuple'>
四.多个变量同时赋值
赋值运算符的左边可以是一个所有元素都为变量的元组或列表,从而一次给多个变量同时赋值。
但赋值运算符左右两边的元素个数必须是相同的,否则会抛出ValueError.
a,b = [5,8]
# [a,b] = [5,8]
print(a,b)
5 8
a,b = 5,8
# [a,b] = 5,8
print(a,b)
5 8
可以在赋值运算符左边的某个变量前添加 * ,以匹配赋值运算符右边的0个或多个元素。
from IPython.display import Image
Image(filename = 'F:/Jupyter/Python/yuanzu1.jpg', width=300, height=150)
![](https://i-blog.csdnimg.cn/blog_migrate/e1947d5bbaf2bcb3c9ea0b3973e766d1.jpeg)
a, *b, c = 1,2,3,4
print(a,b,c)
1 [2, 3] 4
a, b, *c = 1,2,3,4
print(a,b,c)
1 2 [3, 4]
*a, b, c = 1,2,3,4
print(a,b,c)
[1, 2] 3 4
a, *b, c = 1,2
print(a,b,c) # 1赋值了a,2赋值了c, b就是个空列表
1 [] 2
交换两个变量的值:
a = 5
b = 8
temp = a
a = b
b = temp
a = 5
b = 8
# 赋值运算符的左右两边都是元组,左边是变量的元组,右边是表达式的元组
# 先将右边的所有表达式都计算完之后,再分别赋值给左边的所有变量
a,b = b,a
print(a,b)
8 5
学习参考: