一、前言
元组(tuple)是Python中另一个重要的序列结构,与列表类似,也是由一系列按特定顺序排列的元素组成,但是它是不可变序列。
在形式上,列表的所有的元素都放在一个中括号“()”中,两个相邻元素间使用逗号“,”分隔。
二、元组的创建和删除
在Python中提供了多种创建列表的方法,下面分别介绍:
【1】使用赋值运算符直接创建列表
tuplename = (lement 1,element 2,element 3,...,element n)
参数说明:
- tuplename:表示元组的名称。
- element 1,element 2,element 3,…,element n:表示元组中的元素,个数没有限制。
【2】创建空元组
在Python中,可以创建空元组,例如创建一个名称为num的空元组,可以使用下列代码:
num = ()
【3】创建数值元组
在Python中,可以使用list()函数直接将range()函数循环出来的结果转换为元组。
list()函数的基本语法如下:
tuple(data)
其中,data表示可以转换为元组的数据,其类型可以是range对象、字符串、元组或者其他可迭代类型的数据。
例如,创建一个10~20之间(不包含20)所有偶数的元组,可以使用下面代码:
num = tuple(range(10, 20, 2))
print(num)
运行结果如下:
说明: 使用list()函数时,不仅能通过range对象创建元组,还可以通过其他对象创建元组。
【4】删除元组
对于已创建的元组,不再使用时,可以使用del语句将其删除。语法格式如下:
del tuplename
其中,tuplename为要删除元组名称。
说明: del语句在实际开发时,并不常用。因为Python自带垃圾回收机制会自动销毁不用元组。所以我们即使不手动删除,Python也会自动将其回收。
三、访问元组
要访问元组中的值,请使用方括号进行指定索引切片或索引,以获取该索引处的值。
tup1 = ('physics', 'chemistry', 1997, 2000)
tup2 = (1, 2, 3, 4, 5, 6, 7 )
print ("tup1[0]: ", tup1[0])
print ("tup2[1:5]: ", tup2[1:5])
执行结果如下:
四、修改元组元素
元组是不可变的,这意味着我们无法更新或更改元组元素的值。 但是可以对元组重新赋值
tup = (12, 34.56)
tup = ('abc', 'xyz')
print(tup)
运行结果如下:
另外我们还可以对元组进行组合来创建新的元组,如下例所示:
tup1 = (12, 34.56)
tup2 = ('abc', 'xyz')
tup3 = tup1 + tup2
print (tup3)
运行结果如下:
五、元组推导式
使用列表推导式可以快速生成一个元组,它的表现形式与列表相似。只是将推导式中的中括号“[]”,修改为小括号“()”。例如:生成10个随机数的元组,代码如下:
import random # 导入random标准库
randomnumber = (random.randint(10, 100) for i in range(10))
print("生成的元组为", randomnumber)
运行结果如下:
执行结果,可以看是元组推导式并不能生成列表或元组,是一个生成器,需要使用tuple()函数转换一下,代码如下:
import random # 导入random标准库
randomnumber = (random.randint(10, 100) for i in range(10))
randomnumber = tuple(randomnumber)
print("生成的元组为", randomnumber)
运行结果如下:
例如:通过生成器推导式生成一个包含3个元素的生成器对象number,然后调用3次__next__()方法输出每个元素,然后再将生成器转换为元组输出,代码如下:
number = (i for i in range(3))
print(number.__next__()) # 输出第一个元素
print(number.__next__()) # 输出第二个元素
print(number.__next__()) # 输出第三个元素
number = tuple(number) # 转换为元组
print(number)
运行结果如下:
通过上面示例可以看出,如果想使用该生成器对象,必须重新创建一个生成器对象,因为遍历后原生成器对象已经不存在了。