当我们需要在程序内封装数据,又不希望封装的数据被蹿改。那么元祖就非常适合当前场景
元组定义:定义元祖使用小括号,且使用逗号隔开各个数据,数据可以是不同的数据类型
#定义元祖字面量
(元素,元素,.....,元素)
# 定义元祖变量
变量名称 = (元素,元素,....,元素)
# 定义空元祖
变量名称 = ()
变量名称 = tuple()
注意:当元祖只有一个数据时,这个数据后面要添加逗号如:
t1 = (‘hello’, )
# 定义元祖
t1 = (1, "hello", True)
t2 = ()
t3 = tuple()
print(f"t1的类型:{type(t1)}, 内容是:{t1}")
print(f"t2的类型:{type(t2)}, 内容是:{t2}")
print(f"t3的类型:{type(t3)}, 内容是:{t3}")
# 结果:t1的类型:, 内容是:(1, 'hello', True)
# 结果:t2的类型:, 内容是:()
# 结果:t3的类型:, 内容是:()
# 定义单个元祖的元素
t4 = ("hello", )
print(f"t4的类型:{type(t4)}, 内容是:{t4}")
# 结果:t4的类型:, 内容是:('hello',)
# 元祖的嵌套
t5 = ((1, 2, 4), (5, 6, 7))
print(f"t5的类型:{type(t5)}, 内容是:{t5}")
# 结果:t5的类型:, 内容是:((1, 2, 4), (5, 6, 7))
# 下标索引取出内容
num = t5[1][2]
print(f"num的数量:{num}")
# 结果:num的数量:7
# 根据index(),查找特定元素的第一个匹配项
t1 = (1, 2, 'hi', 3, 4, 'hi')
print(t1.index('hi'))
# 结果: 2
# 统计某个数据在元祖出现的次数
t1 = (1, 2, 'hi', 3, 4, 'hi')
print(t1.count('hi'))
# 结果: 2
# 统计元组内的元素个数
t1 = (1, 2, 'hi', 3, 4, 'hi')
print(len(t1))
# 结果: 6
元祖的相关操作

注意事项:元祖由于不可修改的特性,所以其操作方法非常少
t1 = (1, 2, 4)
t1[0] = 5
# Traceback (most recent call last):
# File "/Users/xiajun/PycharmProjects/pythonProject/test.py", line 3, in
# t1[0] = 5
# ~~^^^
# TypeError: 'tuple' object does not support item assignment
t1 = (1, 2, ['one', 'two'])
t1[2][1] = 'best'
print(t1)
# 结果:(1, 2, ['one', 'best'])
t1 = (1, 2, ['one', 'two'])
t1[2] = [1, 2, 3,]
print(t1)
# Traceback (most recent call last):
# File "/Users/xiajun/PycharmProjects/pythonProject/test.py", line 17, in
# t1[2] = [1, 2, 3,]
# ~~^^^
# TypeError: 'tuple' object does not support item assignment
经过上述对元祖的学习,可以总结出列表有如下特点:
多数特性和 list一致,不同点在于不可修改的特性