认识元组
元组(tuple)是不可变序列,也是Python 最基本的数据结构之一,具有如下特点。
- 元组是有序的数据结构。内部数据的位置排列固定。
- 通过下标索引访问内部数据。支持选代和切片的读操作。
- 元组是不可变的数据类型。不能添加、删除和更新元组内的数据。
- 内部数据统称为元素,元素的值可以重复,可以为任意类型的数据,如数字、字符串、列表、元组、字典和集合等。
- 列表的字面值:使用小括号包含所有元素,元素之间使用逗号分隔。
元组与列表的区別:
- 元组字面值使用小括号表示,而列表字面值使用中括号表示。
- 与列表相比,元组不能增加元素,没有append()和 extend()方法;也不能删除元素,没有remove()和 pop()方法。
- 列表不能作为字典的键、集合的元素,而元组可以作为哈希值使用。
元组的优点:
- 元组比列表操作速度快。
- 如果定义一个常量集,并且仅用于读取操作,建议优先选用元组结构。如果对一组数据进行 “写保护”,建议使用元组,而不是列表。如果必须改变这些值,则需要执行从元组到列表的转换。
相互转换
- 使用内置的 tuple()函数可以将一个列表转换为元组。
- 使用内置的 list()函数可以将一个元组转换为列表。
构造元组
以小括号作为起始和终止标识符,其中包含0个或多个元素,元素之间通过逗号分隔,元组字面值的语法格式如下:
(元素1,元素2,元素3,…,元素n) t1 = () # 空元组 t2 = (1,2,3) t3 = 1,2,3 # 小括号不是必须的 t4 ="a",1,1,[1,2,3] # 定义不同类型的元组
使用tuple()函数可以将列表、range 对象、字符串或者其他类型的可迭代数据转换为元组。
t1 = tuple((1,2,3)) # 元组转列表 t2 = tuple([1,2,3]) # 列表转元组
应用元组
格式化输出
name = 'zhangsan' gender = 'male' tup = (name,gender) print('name:%s,age:%s'%(name,gender)) # 输出 name:zhangsan , age:male print('name:%s,age:%s'%tup) # 输出 name:zhangsan, age:male
多重赋值
a = 1 b = 2 a,b = b,a # 元组b,a解包 print(a) # 输出为2 print(b) # 输出1
数据保护
元组只能读取,不能写入,如果将列表转换为元组,可以保护数据不被随意改动。
name list = ["zhangsan", "lisi"', "wangwu"] name_tuple = tuple(name_list) print(name tuple) # 输出 (zhangsan, lisi, wangwu) name list = list(name tuple) print(name list) # 输出 [zhangsan, list, wangwu]
数据切片
tup= (3,4,5,6,7,9,11,13,15,17) print(tup[::]) # 返回包含所有元素的新元组 print(tup[::-1) # 逆序的所有元素:(17,15,13,11,9,7,6,5,4,3) print(tup[3::]) # 从下标3开始的所有元素:(6,7,9,11,13,15,17) print(tup[3:6]) # 输出 (6,7,9) print(tup[100:]) # 空元组 () print(tup[100]) # 抛出异常