✅作者简介:人工智能专业本科在读,喜欢计算机与编程,写博客记录自己的学习历程。
个人主页:小嗷犬的博客
个人信条:为天地立心,为生民立命,为往圣继绝学,为万世开太平。
本文内容:Python 元组
更多内容请见
- Python 入门基础专栏
- Python 字符串
- Python 常用字符串方法
除了两个方面,元组数据类型几乎与列表数据类型一样。
用圆括号()表示
首先,元组输入时用圆括号
()
,而不是用方括号[]
:
tp = ('Python', 'Java', 'C')
print(tp)
不可变性
元组与列表的主要区别还在于,元组像字符串一样,是不可变的。元组不能让它们的值被修改、添加或删除:
tp = ('Python', 'Java', 'C')
tp[1] = 'C++'
如果元组中只有一个值,你可以在括号内该值的后面跟上一个逗号,表明这种情况。否则,Python 将认为,你只是在一个普通括号内输入了一个值。逗号告诉 Python,这是一个元组(不像其他编程语言,Python 接受列表或元组中最后表项后面跟的逗号)。
a = ('Python')
print(type(a))
b = ('Python',)
print(type(b))
利用你可以用元组告诉所有读代码的人,你不打算改变这个序列的值。如果需要一个永远不会改变的值的序列,就使用元组。使用元组而不是列表的第二个好处在于,因为它们是不可变的,它们的内容不会变化,Python 可以实现一些优化,让使用元组的代码比使用列表的代码更快。
在 Python 中,创建列表通常用 tuple 函数或圆括号 ()。
与
list()
函数类似,tuple()
可以将参数中的可迭代对象转换成元组:
a = tuple('Python')
print(a)
b = tuple(['Python', 'Java', 'C'])
print(b)
使用圆括号
()
创建列表时,需要在列表中列出所有元素:
a = ('Python', 'Java', 'C')
print(a)
直接使用圆括号
()
将得到一个空的元组:
a = ()
print(a)
在 Python 中, 允许一次给多个变量赋值, 称为多重赋值。 可以使用元组和列表实现多重赋值:
a, b, c = ('Python', 'Java', 'C')
print(a, b, c, sep='\n')
在列表操作中, 除了对列表进行原地修改的方法, 其他方法都可以应用在元组中, 例如索引、分片、连接和重复等,与列表不同的是,在元组中使用这些方法,会返回新的元组,而不是列表。
如果仅仅使用圆括号把一个值括起来, Python 会认为是表达式, 得到的不会是元组类型,而是值本身的类型:
a = (3.14)
print(type(a))
所以,如果确实希望得到一个包含单个元素的元组,需要在这一单个元素后面加上一个逗号,与表达式区分开来:
a = (3.14,)
print(type(a))
在不引起歧义的情况下,可以省略圆括号:
a = 'Python', 'Java', 'C'
print(type(a))
不可变性也是元组和列表最大的区别。 如果试图修改元组的某个元素, 将会触发
TypeError
的异常:
a = ('Python', 'Java', 'C')
a[1] = 'C#'
元组的不可变性仅指的是不可以改变元组的顶层元素。如果元组中的元素本身是可变的,Python 允许修改其内容:
a = ('Python', ['Java', 'C'], 'Golang', 'C++')
a[1][1] = 'C#'
print(a)
主要原因如下:
- 元组占用的空间较小
- 你不会意外修改元组的值
- 可以将元组用作字典的键
- 函数的参数是以元组形式传递的