文章目录
什么是元组
元组是一个和列表和相似的数据类型,两者拥有着基本相同的特性,但是也有很多不同的地方。
- 元组与列表一样,都是一种可以存储多种数据结构的队列
- 同样的元组也是一个有序的,且元素可以重复的集合
元组的定义与创建
- 在 Python 中,tuple 代表着元组这一类型,也可以用它定义一个元祖
- 在 Python 中,元组是一个无限制长度的数据结构
- 在 Python 中,元组中的元素存在于一个
()
小括号内,如name = tuple('lily', 'jack')
元组与列表的区别
- 元组比列表占用的资源更小
- 列表创建后,可以进行修改
- 元组创建后,不能进行修改
修改列表示例
修改列表的示例如下:
>>> x = [1, 2, 3]
>>> x[0] = 11
>>> x
[11, 2, 3]
- 在第 1 行,创建了列表 x
- 在第 2 行,修改列表 x 的第 0 项元素
- 在第 3 行,显示修改后的列表
- 在第 4 行,结果表示修改成功了
修改元组示例
修改元组的示例如下:
>>> y = (1, 2, 3)
>>> y[0] = 11
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'tuple' object does not support item assignment
>>> y
(1, 2, 3)
- 在第 1 行,创建了元组 y
- 在第 2 行,修改元组 y 的第 0 项元素
- 在第 3 行,提示出现 TypeError,因为 ‘tuple’ object does not support item assignment,所以无法修改
- 在第 6 行,显示元组 y
- 在第 7 行,结果表示元组 y 没有被修改
特殊的元组
如果一个元组没有包含任何元素,使用 () 表示一个空元组,例子如下:
>>> t = ()
>>> t
()
如果一个元组只包含了一个元素 item,需要在元素后加一个逗号,使用 (item, ) 表示该元组,例子如下:
>>> t = (123, )
>>> t
(123,)
注意,(123, ) 和 (123) 两者表示不同的含义:
- (123, ) 表示的是一个元组,元组中包含一个整数 123
- (123) 表示的是一个带括号的表达式,整数 123 嵌入括号中
两者是不相同的,示例如下:
>>> t = (123, )
>>> i = (123)
>>> t == 123
False
>>> i == 123
True
- 在第 3 行,将元组(123,) 与整数 123 比较,结果为假
- 在第 5 行,将表达式(123) 与整数 123 比较,结果为真
元组的简写
当元组作在赋值操作符 = 的右边时,可以省略括号,示例如下:
>>> t = 123, 456
>>> t
(123, 456)
>>> x = 123,
>>> x
(123, )
- 在第 1 行,创建了元组 (123, 456)
- 在第 4 行,创建了元组 (123,)
元组的类型
str_tuple = ('name', 'age', ' ', '')
int_tuple = (1, 10, 22, 34, 66, 100)
float_tuple = (1.1, 3.14, 6.58, 8.88)
bool_tuple = (False, True, False)
none_tuple = (None, None, None)
tuple_tuple = ((1, 2, 3), (1.4, 3.1415926, 6.88))
list_tuple = ([123, 456], [789, 520]) # 这里需要注意的是,list是可变的,但是当列表成为了元组的成员之后,就是不可变的了
in、max、min 在列表中的使用
关键字 in
通过关键字 in 检查元组中是否包含指定元素,示例如下:
>>> 'lily' in ["lily", "jack", "hanmeimei"]
True
>>> 'neo' in ["lily", "jack", "hanmeimei"]
False
- 在第 1 行,检测字符串 ‘lily’ 在元组中
- 在第 3 行,检测字符串 ‘neo’ 不在元组中
max(元组) 函数
使用函数 max 获取元组中最大的元素,示例如下:
>>> max((1, 2))
2
>>> max((1, 3, 2))
3
min(元组) 函数
使用函数 min 获取元组中最小的元素,示例如下:
>>> min((1, 2))
1
>>> min((1, 3, 2))
1
index(item) 方法
因为元组不能修改,所以针对 列表 进行修改的常用方法在 元组 上就不可以使用,但是 index(item) 方法
可以使用;
index(item) 方法在元组中查找指定元素 item,如果找到元素 item,则返回元素 item 的索引;如果找不到,则抛出异常。示例如下:
>>> x = ('lily', 'neo', 'hanmeimei')
>>> x.index('lily')
1
>>> x.index('jack')
# >>> 执行结果如下:
# >>> Traceback (most recent call last):
# >>> File "<stdin>", line 1, in <module>
# >>> ValueError: 'hehe' is not in tuple
- 在第 2 行,在元组中使用 index 方法查找元素 ‘lily’
- 在第 3 行,显示元素 ‘lily’ 在元组中的索引是 1
- 在第 4 行,在元组中使用 index 方法查找元素 ‘jack’
- 在第 5 行,因为元组中没有包含元素 ‘jack’ ,显示错误 “ValueError: ‘mooc’ is not in tuple”
一定要注意元组和列表的不同之处,元组一般适合用来存储不变的数据。