元组是Python中常用的一种数据结构。元组由不同的元素组成,每个元素可以存储不同类型的数据,如字符串、数字甚至元组。元组是“写保护”的,即元组创建后不能再做任何修改操作,元组通常代表一行数据,而元组中的元素代表不同的数据项。
Python元组的操作
Python元组的操作主要是元组的创建、访问、遍历、删除元组引用及高级运算。
Python元组的创建
Tuple(元组)是Python内置的一种数据结构。元组由一系列元素组成,所有元素被包含在一个圆括号中。创建元组时,可以不指定元素的个数,相当于不定长的数组,但是一旦创建后就不能修改元组的长度。
元组创建的格式如下:
tuple = (元素1, 元素2, ...)
元组的初始化示例如下:
# 创建空的元组,只需要一对空的圆括号
tuple = ()
# 该元组由3个元素组成,元素之间使用逗号分隔
tuple1 = ('币安网', '火币网', 'BitMEX')
# 元组中只包含一个元素时,需要在元素后面添加逗号,否则括号会被当作运算符使用
tuple2 = (188,)
# 元组中可以存储不同的类型,甚至是可以包含元组
tuple3 = ('tool', 188, ('tool188',))
Python元组的访问
元组中元素的值通过索引访问,索引是一对方括号中的数字,索引也称为“下标”。
访问格式如下:
tuple[n]
元组的访问还有一些特殊的用法,这些用法对于获取元组的值非常方便,例如负数索引和分片索引。这两个特性是Python的特殊用法,C或Java语言并不支持。
负数索引从元组的尾部开始计数,最尾端的元素索引表示-1,次尾端的元素索引表示-2,依次类推。
分片(slice)是元组的一个子集,分片是从第1个索引指向到第2个索引(不包含)指向所指定的所有元素。分片索引可以为正数或负数,两个索引之间用冒号分隔。
两种特性的示例如下:
tpl = ('比特币', '莱特币', '以太坊')
print(tpl[-1])
print(tpl[-2])
print(tpl[0:1])
print(tpl[-3:-1])
输出结果为:
以太坊
莱特币
('比特币',)
('比特币', '莱特币')
此外,元组的元素又是元组时,可以把其理解为多维数组,示例如下:
tpl1 = ('今日头条', '一点咨询')
tpl2 = ('产品', '开发', '测试')
tpl = (tpl1, tpl2)
# 打印元组第1个元组的第2个元素
print(tpl[0][1])
# 打印元组第2个元组的第3个元素
print(tpl[1][2])
输出结果为:
一点咨询
测试
创建元组的过程,Python称之为“打包”。相反,元组也可以执行“解包”的操作。“解包”可以将包元组中的各个元素分别赋值给多个变量。这样,避免了使用循环遍历的方法获取每个元素的值,降低了代码的复杂性,使表达方式更自然。
示例如下:
# 打包
tpl = ('滴滴', '货车帮', '运满满', '货拉拉')
# 解包
a, b, c, d = tpl
print(a, b, c, d)
打印结果为:
滴滴 货车帮 运满满 货拉拉
Python元组的遍历
Python中元组是可遍历的数据类型,可以结合for...in...语句进行遍历,详情可以参考for关键字的用法。
Python元组的修改
元组中的元素值是不允许修改的,但我们可以对元组进行连接组合。
示例如下:
tup1 = ('too', 'l')
tup2 = (1, 88)
# 以下修改元组元素操作是非法的。
# tup1[0] = 'tool'
# 创建一个新的元组
tup3 = tup1 + tup2
print(tup3)
输出结果为:
('too', 'l', 1, 88)
Python元组的删除
元组中的元素值是不允许删除的,但我们可以使用del语句来删除整个元组。
示例如下:
tup = ('SM Entertainment', 'JYP', 'YG Entertainment', 'DSP')
print(tup)
del tup
print(tup)
输出结果为:
('SM Entertainment', 'JYP', 'YG Entertainment', 'DSP')
Traceback (most recent call last):
File "**", line 53, in run_file
pydev_imports.execfile(file, globals, locals) # execute the script
File "**", line 18, in execfile
exec(compile(contents+"\n", file, 'exec'), glob, loc)
File "**", line 5, in <module>
print(tup)
NameError: name 'tup' is not defined
Python 元组内置类
tuple是位于builtins模块中的内置类,无需import模块就可直接使用,其实所有的元组都是该tuple内置类对象实例。
详情参见Python的tuple内置类。