开门见山,什么是元组?
-
元组(tuple)是 Python 中另一个重要的序列结构。在形式上,元组的所有元素都放在一对()中,两个相邻元素间使用,分隔。在内容上,可以将整数、实数、字符串、列表、元组等任何类型的内容放入到元祖中。通常情况下,元组用于保存程序中不可修改的内容。 -
元祖的创建- 同其他类型的 Python 变量一样,创建元组时,也可以使用赋值运算符
=直接将一个元组赋值给变量。语法格式如下:
num = (7, 14, 21, 28, 35, 42, 49, 56, 63)- 在 Python 中,
元组使用一对小括号将所有的元素括起来,但是小括号不是必须的,只要将一组值用逗号分隔开来,Python 就可以视其为元组。例如,下面的代码定义的也是元组:
ukguzheng = '渔舟唱晚', '高山流水', '出水莲', '汉宫秋月'注意:可以使用 type() 函数测试变量的类型,如下面代码:
verse1 = ('一片冰心在玉壶') print('verse1的类型为', type(verse1)) # <class 'str'> verse2 = ('一片冰心在玉壶',) print('verse2的类型为', type(verse2)) # <class 'tuple'> - 同其他类型的 Python 变量一样,创建元组时,也可以使用赋值运算符
-
创建数值元组- 使用
tuple()函数直接将range()函数循环出来的结果转换为数值元组
tuple(range(10, 20, 2)) # (10, 12, 14, 16, 18) - 使用
-
删除元组-
对于删除创建的元组,不再使用时,可以使用
del语句将其删除 -
注意:del 语句在实际开发时,并不常用。因为 Python 自带的垃圾回收机制会自动销毁不用的元组,所以即使我们不手动将其删除,Python 也会自动将其回收
verse = ('春眠不知晓', 'Python不得了', '夜来爬数据', '好评知多少') del verse -
-
访问元组元素- 可以通过元组的索引获取指定的元素
untitle = ('Python', 28, ('人生苦短', '我用Python'), ['爬虫', '自动化运维', '云计算', 'Web开发']) print(untitle[0]) # Python -
使用切片获取-
切片操作时访问序列中元素的另一种方法,它可以访问一定范围的元素。通过切片操作可以生成一个新的序列。实现切片操作的语法格式如下:
sname[start : end : step]-
sname:表示序列的名称 -
start:表示切片的开始位置(包括该位置),如果不指定,则默认为0 -
end:表示切片的截止位置(不包括该位置),如果不指定,则默认序列的长度 -
step:表示切片的步长,如果省略,则默认为1,当省略该步长时,最后一个冒号也可以省略
untitle = ('Python', 28, ('人生苦短', '我用Python'), ['爬虫', '自动化运维', '云计算', 'Web开发']) print(untitle[:3]) # ('Python', 28, ('人生苦短', '我用Python')) -
-
-
修改元组元素- 将元组内容相加
ukguzheng = ('蓝山', '卡布奇诺', '曼特宁', '摩卡') ukguzheng = ukguzheng + ('麝香猫') -
元组推导式- 我们可以使用下面的代码生成一个包含10个随机数的元组
import random # 导入random标准库 random_number = (random.randint(10, 100) for i in range(10)) print('生成的元组为:', randomnumber) # 执行结果如下: # 生成的元组为: # <generator object <genexpr> at 0x000001E5747AC510> # 可以看出使用元组推导式生成的结果并不是一个元组或者列表,而是一个生成器对象 random_number = tuple(random_number) print('转换后', random_number) # 执行结果如下: # 生成的元组为: # (93, 76, 29, 65, 100, 77, 50, 65, 12, 71)
tips:元组与列表的区别
-
列表属于可变序列,它的元素可以随时修改或者删除;元组属于不可变序列,其中的元素不可以修改,除非整体替换
-
列表可以使用 append()、extend()、insert()、remove() 和 pop() 等方法实现添加和修改列表元素,而元组没有这几个方法,所以不能向元组中添加和修改元素。同样,元组也不能删除元素。
-
列表可以使用切片访问和修改列表中的元素。元组也支持切片,但是它只支持通过切片访问元组中的元素,不支持修改。
-
元组比列表的访问和处理速度快,所以当只是需要对其中的元素进行访问,而不进行任何修改时,建议使用元组。
-
列表不能作为字典的键,而元组则可以。