元组介绍
元组为不可变序列,元组中的元素不可以单独修改
创建
如果要创建的元组只包括一个元素,则需要在定义元组时,在元素的后面加一个逗号”,“,否则创建的就不是一个元组
赋值创建
元组名称 = (元素1, 元素2, 元素n)
创建空元组
元组名称 = ()
创建数值元组
tuple(data)
data为要转换为数组的数据,其类型可以是range对象、字符串、元组或者其它可以迭代类型的数据
str=(1)
tuple1=(1,)
tuple2=()
tuple3=tuple("2023")
print("str变量类型为:{0},值为:{1}".format(type(str),str))
print("tuple1变量类型为:{0},值为:{1}".format(type(tuple1),tuple1))
print("tuple2变量类型为:{0},值为:{1}".format(type(tuple2),tuple2))
print("tuple3变量类型为:{0},值为:{1}".format(type(tuple3),tuple3))
删除
del 元组名称
删除整个元组
del(元组名称[索引])
删除指定索引的数据
元组名称.remove(数据)
删除第一次出现的指定数据
元组名称.pop()
删除末尾数据
元组名称.pop(索引)
删除指定索引数据
元组名称.clear()
清空元组
修改
元组是不可变序列,所以我们不能对它的单个元组值进行修改,但是元组也并不是完全不能被修改的,我们可以对元组进行重新赋值
重新赋值
元组名称 = ('值1','值2','值3')
元组名称 = ('值1','值2','值3','值4')
连接组合
#在进行元组连接时,连接的内容必须都是元组,不能将元组和字符串或者列表进行连接
#如果要连接的元组只有一个元素,一定不要忘记后面的逗号
元组名称 = 元组名称 + ('值1',)
元组名称 = 元组名称 + ('值1','值2','值3')
遍历
直接使用for循环遍历
- 元组中有多少成员,for就会循环多少次
- 变量名代表for每次循环的时候,得到的元组成员的值
tuple1 = ("张三","李四","王五")
for n in tuple1:
print(n)
使用for循环和enumerate()函数实现
- 可以实现同时输出索引值和元素内容
tuple1 = ("张三","李四","王五")
for index,item in enumerate(tuple1):
print("索引是:{0},值为:{1}".format(index,item))
元组推导式
使用元组推导器生成的结果并不是一个元组或者列表,而是一个生成器对象,要使用该生成器对象,可以将其转换为元组或者列表。转换为元组使用tuple( )函数,转换为列表使用list( )函数
生成器对象名称 =(表达式 for 循环变量 in range(生成的range对象))
#导入random标准库
import random
a = (i for i in range(10))
print("生成的生成器对象",a)
print("将生成器转换为元组:{0}".format(tuple(a)))
要使用通过元组推导器生成的生成器对象,可以直接通过for循环遍历,或者直接使用__next__()方法进行遍历,无论是通过哪种方法遍历,如果还想要再使用该生成器对象,都必须重新新建一个生成器对象,因为遍历后,原生成器对象已经不存在。
number = (i for i in range(3))
print(number.__next__()) #输出第1个元素
print(number.__next__()) #输出第2个元素
print(number.__next__()) #输出第3个元素
元组和列表的区别
-
列表属于可变序列,它的元素可以随时被修改或者删除;而元组属于不可变序列,其中的元素不可以被修改,除非整体替换。
-
列表可以使用append()、extend()、insert()、remove()和pop()等方法实现添加和修改列表元素,而元组没有这几个方法,因为不能向元组中添加和修改元素,同样也不能删除元组中的元素。
-
列表可以使用切片访问和修改列表中的元素;元组也支持切片,但是它只支持通过切片访问元组中的元素,不支持修改。
-
元组比列表的访问和处理速度快,所以如果只需要对其中的元素进行访问,而不进行任何修改,建议使用元组而不使用列表。
-
列表不能作为字典的键,而元组可以。