"""元组的定义
- 元组是有序的不可变对象的集合
- 元组使用下括号包围,各个对象之间使用逗号分隔
- 元组是异构的,可以包含多种数据类型
"""
1. 直接使用逗号分隔
# 1. 直接使用逗号分隔
tup1 = 1, 2, 3, 4, 5
print(type(tup1), tup1)

2. 通过小括号填充元素
# 2. 通过小括号填充元素
tup2 = (1, 2, 3, 4, 5)
print(type(tup2), tup2)

3. 通过构造函数tuple(iterable)
# 3. 通过构造函数tuple(iterable)
tup3 = tuple()
print(type(tup3), tup3)
# 赋值为字符串对象
tup4 = tuple('testing')
print(type(tup4), tup4)
# 赋值为列表对象
tup5 = tuple([1, 2, 3, 4, 5])
print(type(tup5), tup5)

4. 注意:单元素元组,逗号不可或缺
# 4. 注意:单元素元组,逗号不可或缺
tup6 = 1,
print(type(tup6), tup6)
tup7 = (1,)
print(type(tup7), tup7)
# 若不加逗号,则返回的是一个int类型的值
tup8 = (8)
print(type(tup8), tup8)

"""元组的使用: 索引"""
tup9 = tuple("hefei")
# 1. 正向索引
print(tup9[2])
# 2. 反向索引
print(tup9[-2])

"""元组的使用:切片
- 切片[start:stop:step]
- 三个值都是可选的,非必填
- start值:指示开始索引值,如果没有指定,则默认开始值为0;
- stop值: 指示到哪个索引值结束,但不包括这个结束索引值。如果没有指定,则取列表允许的最大索引值;
- step值: 步长值指示每一步大小,如果没有指定,则默认步长为1
"""
# 1. [start:stop:step]
tup10 = tuple("hefeiwtt")
print(tup10)
print(tup10[0:3:1])
# 2. 将元组反转
print(tup10[::-1])

"""元组常用方法index()
- index(item)
- 入参:对象item
- 返回:与目标元素相匹配的首个元素的索引
- 目标必须在元组中存在的,否则会报错
"""
tup11 = tuple("hefeiwtt")
# 1. index(item)
print(tup11.index('t'))
# 2. 不存在,会报ValueError错误
#print(tup11.index('o'))

"""元组常用方法count()
- count(item): 返回某个元素出现的次数
- 入参: 对象item
- 返回: 次数
"""
# 1. count(item)
tup12 = tuple("hefeiwtt")
print(tup12.count('t'))

"""元组解包
- 把一个可迭代对象里的元素,一并赋值到由对应的变量组成的元组中
"""
tup13 = 1, 2, 3
# 1. 传统逐个赋值
a = tup13[0]
b = tup13[1]
c = tup13[2]
print(a, b, c)
# 2. 解包平行赋值
a, b, c = tup13
print(a, b, c)

"""元组和列表
- 相同点:
- 都是有序的
- 都是异构的,能够包含不同类型的对象
- 都支持索引和切片
- 区别
- 声明方式不同,元组使用(),列表使用[]
- 列表是可变的,元组是不可变的
"""
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】