文章目录
- 【4.2】数据容器:tuple元组
- 一、元组的定义格式
- 二、元组的特点
- 三、元组的操作
- (一)常见操作
- (二)循环遍历
【4.2】数据容器:tuple元组
一、元组的定义格式
为什么需要元组
列表是可以修改的。如果想要让传递的信息无法被篡改,列表就不合适了。
元组和列表一样,都是可以封装多个、不同类型的元素在内。但最大的不同点在于:元组一旦定义完成,就不可修改。(可以认为元组就是“只读的list”)
所以,当我们需要在程序内封装数据,又不希望封装的数据被篡改,那么元组就非常合适了。
定义元组
定义元组使用小括号,且使用逗号隔开各个数据,数据可以是不同的数据类型。
# 定义元组字面量
(元素, 元素, ..., 元素)# 定义元组变量
变量名称 = (元素, 元素, ..., 元素)# 定义空元组
变量名称 = () # 方式1
变量名称 = tuple() # 方式2
注意,元组只有一个数据时,这个数据后面要加逗号,如下所示。
# 定义3个元素的元组
t1 = (1, "Hello", True)# 定义1个元素的元组
t2 = ("Hello", ) # 注意,必须带有逗号,否则不是元组类型
元组也支持嵌套,如下所示。
# 定义一个嵌套元组
t1 = ( (1, 2, 3), (4, 5, 6) )
print(t1[0][0]) # 1
不可以修改元组的内容,否则会直接报错。
# 尝试修改元组内容
t1 = (1, 2, 3)
t1[0] = 5 # 报错
但是有这样一种特殊情况,如果元组内嵌套了一个list列表,那么是可以对元组内的这个list进行内容修改的。
# 修改元组中list列表内的内容
t1 = (1, 2, ["zhangsan", "lisi"])
t1[2][1] = "Hello"
print(t1) # (1, 2, ['zhangsan', 'Hello'])
二、元组的特点
元组有如下特点:
- 可以容纳多个数据;
- 可以容纳不同类型的数据;
- 数据是有序存储的(下标索引);
- 允许重复数据存在;
- 不可以修改;
- 支持for循环。
总之,除了“不可修改”的特点外,基本与list的特点一致。
三、元组的操作
(一)常见操作
就是把list操作中的修改操作去掉,查询操作搬过来。
示例:
# 根据下标(索引)取出数据
t1 = (1, 2, 'Hello')
print(t1[2]) # Hello# index查找方法,查找特定元素第一个匹配项的下标
t1 = (1, 2, "Hello", 3, 4, "Hello")
print(t1.index("Hello")) # 2# count统计方法,统计某元素在元组内出现的次数
t1 = (1, 2, "Hello", 3, 4, "Hello")
print(t1.count("Hello")) # 2# 统计元组内的元素个数
t1 = (1, 2, 3)
print(len(t1)) # 3
(二)循环遍历
while循环
t1 = (1, 2, "Hello", 3, 4, "Hello")index = 0
while index < len(t1):print(f"元组的元素有:{t1[index]}")index += 1
for循环
t1 = (1, 2, "Hello", 3, 4, "Hello")for element in t1:print(f"元组的元素有:{element}")