Python 基础教程

Python 高级教程

Python 相关应用

Python 笔记

Python 元组


元组是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内置类。