数据容器——tuple(元组)
元组同列表一样,都是可以封装多个元素、不同类型元素在内。
但最大的不同点在于:元组一旦定义完成,就不可修改。(可以理解为tuple是只读的list)
tuple定义
# tuple字面量
(元素1, 元素2, 元素3, ...)
# 定义tuple变量
变量名称 = (元素1, 元素2, 元素3, ...)
# 定义空tuple元组
变量名称 = ()
变量名称 = tuple() # 实质上是得到一个元组的类对象
元组内的每一个数据,称为 元素
- 以()作为标识
- tuple每一个元素之间用 , 隔开
注意:列表可以一次存储多个数据,且可以是不同类型的数据,支持嵌套
# 定义元组
tuple_1 = (1, "sun", True)
tuple_2 = ()
tuple_3 = tuple()
print(f"{tuple_1} {type(tuple_1)}") # (1, 'sun', True) <class 'tuple'>
print(f"{tuple_2} {type(tuple_2)}") # () <class 'tuple'>
print(f"{tuple_3} {type(tuple_3)}") # () <class 'tuple'>
注意事项:
# 定义的tuple只有一个元素时,必须带有,否则不是元组类型
t4 = ("Hello", )
t5 = ("World")
print(f"{t4} {type(t4)}") # ('Hello',) <class 'tuple'>
print(f"{t5} {type(t5)}") # World <class 'str'>
元组的嵌套:
# 元组的嵌套
tuple_6 = ((1, 2, 3), (4, 5, 6))
print(tuple_6[1][2]) # 6
元组的操作:(不可增 删 改, 只可查)
# index 查找方法
tuple_7 = ("java", "c++", "python", "c", "go")
index = tuple_7.index("python")
print(index) # 2
# count 统计方法
tuple_7 = ("java", "c++", "python", "c", "go", "python")
num = tuple_7.count("python")
print(num) # 2
# len()统计tuple中的元素数量
tuple_7 = ("java", "c++", "python", "c", "go", "python")
num = len(tuple_7)
print(num) # 6
注意事项:
# 不可修改元组的内容,否则会直接报错
tuple_8 = (1, 2, 3, 4)
tuple_8[1] = 200
print(tuple_8) # TypeError: 'tuple' object does not support item assignment
# 如果元组中时列表,修改列表的内容时允许的
tuple_9 = ([1, 2, 3, 4], ["a", "b", "c", "d"])
# tuple_9[0] = [5, 6, 7, 8] # TypeError: 'tuple' object does not support item assignment
tuple_9[0][2] = 300
print(tuple_9) # ([1, 2, 300, 4], ['a', 'b', 'c', 'd'])
元组tuple特点:
- 和list基本相同(有序、任意数量元素、允许重复元素),唯一不同在于不可修改
- 支持for循环
# 练习
stu_message = ('周杰伦', 23, ['football', 'music'])
index = stu_message.index(23)
print(index) # 1
name = stu_message[0]
print(name) # 周杰伦
del stu_message[2][1]
print(stu_message) # ('周杰伦', 23, ['football'])
stu_message[2].append('coding')
print(stu_message) # ('周杰伦', 23, ['football', 'coding'])
stu_message[2].pop(0)
print(stu_message) # ('周杰伦', 23, ['coding'])