本文目录导读:

我来详细介绍Python元组的创建和使用案例。
元组的创建
基本创建方式
# 方式1:使用小括号 t1 = (1, 2, 3, 4, 5) print(t1) # (1, 2, 3, 4, 5) # 方式2:使用tuple()函数 t2 = tuple([1, 2, 3, 4, 5]) print(t2) # (1, 2, 3, 4, 5) # 方式3:创建单个元素的元组(注意逗号) t3 = (1,) # 这是一个元组 t4 = (1) # 这是一个整数 print(type(t3)) # <class 'tuple'> print(type(t4)) # <class 'int'> # 方式4:省略括号(只有在明确是元组时才能省略) t5 = 1, 2, 3, 4, 5 print(t5) # (1, 2, 3, 4, 5)
创建混合类型元组
# 元组可以包含不同类型的数据 mixed_tuple = (1, "Hello", 3.14, True, [1, 2, 3]) print(mixed_tuple) # (1, 'Hello', 3.14, True, [1, 2, 3])
元组的访问
索引访问
fruits = ('apple', 'banana', 'orange', 'grape', 'watermelon')
# 正向索引
print(fruits[0]) # apple
print(fruits[2]) # orange
# 反向索引
print(fruits[-1]) # watermelon
print(fruits[-2]) # grape
切片操作
numbers = (0, 1, 2, 3, 4, 5, 6, 7, 8, 9) # 基本切片 print(numbers[2:5]) # (2, 3, 4) print(numbers[:4]) # (0, 1, 2, 3) print(numbers[6:]) # (6, 7, 8, 9) # 步长切片 print(numbers[::2]) # (0, 2, 4, 6, 8) print(numbers[1::2]) # (1, 3, 5, 7, 9) print(numbers[::-1]) # (9, 8, 7, 6, 5, 4, 3, 2, 1, 0)
元组的常用操作
基本操作
# 拼接元组 t1 = (1, 2, 3) t2 = (4, 5, 6) t3 = t1 + t2 print(t3) # (1, 2, 3, 4, 5, 6) # 重复元组 t4 = t1 * 3 print(t4) # (1, 2, 3, 1, 2, 3, 1, 2, 3) # 检查元素是否存在 print(2 in t1) # True print(10 in t1) # False # 获取长度 print(len(t1)) # 3
元组方法
numbers = (1, 3, 5, 3, 7, 3, 9, 3)
# count() - 统计元素出现次数
count_3 = numbers.count(3)
print(f"3出现了{count_3}次") # 3出现了4次
# index() - 查找元素索引
index_5 = numbers.index(5)
print(f"5的索引是{index_5}") # 5的索引是2
# 指定范围查找
index_7 = numbers.index(7, 4, 8) # 在索引4-8区间查找7
print(f"7的索引是{index_7}") # 7的索引是4
元组的实际应用案例
案例1:函数多返回值
def get_student_info():
"""返回学生的基本信息"""
name = "张三"
age = 20
grade = "大二"
return name, age, grade # 返回元组
# 接收返回值
student = get_student_info()
print(f"学生信息:{student}") # 学生信息:('张三', 20, '大二')
# 解包元组
name, age, grade = get_student_info()
print(f"姓名:{name},年龄:{age},年级:{grade}")
案例2:坐标系统
# 使用元组表示坐标点
points = [
(0, 0), # 原点
(3, 4), # 点A
(-2, 5), # 点B
(1, -3) # 点C
]
def calculate_distance(point1, point2):
"""计算两点之间的距离"""
x1, y1 = point1
x2, y2 = point2
distance = ((x2 - x1) ** 2 + (y2 - y1) ** 2) ** 0.5
return distance
# 计算点A到原点的距离
distance = calculate_distance(points[1], points[0])
print(f"点A到原点的距离:{distance:.2f}") # 点A到原点的距离:5.00
案例3:数据记录
# 使用元组作为不可变记录
employees = [
("EMP001", "张三", 8000, "技术部"),
("EMP002", "李四", 9000, "市场部"),
("EMP003", "王五", 7500, "技术部"),
("EMP004", "赵六", 8500, "人事部")
]
# 查找特定部门的员工
def find_employees_by_department(employees, department):
"""按部门查找员工"""
result = []
for emp in employees:
emp_id, name, salary, dept = emp
if dept == department:
result.append(emp)
return result
tech_employees = find_employees_by_department(employees, "技术部")
print("技术部员工:")
for emp in tech_employees:
print(f" 工号:{emp[0]},姓名:{emp[1]},薪资:{emp[2]}")
案例4:字典中的元组作为键
# 元组可以作为字典的键(列表不行)
city_population = {
(39.9042, 116.4074): "北京",
(31.2304, 121.4737): "上海",
(23.1291, 113.2644): "广州"
}
# 查找城市
coordinate = (31.2304, 121.4737)
if coordinate in city_population:
print(f"坐标{coordinate}对应的城市是:{city_population[coordinate]}")
案例5:数据不可变性的应用
# 使用元组存储配置信息
DATABASE_CONFIG = (
"localhost", # 主机名
3306, # 端口号
"my_database", # 数据库名
"root", # 用户名
"password123" # 密码
)
def connect_to_database(config):
"""连接数据库(模拟)"""
host, port, db_name, user, password = config
print(f"正在连接数据库...")
print(f"主机:{host}")
print(f"端口:{port}")
print(f"数据库:{db_name}")
print(f"用户:{user}")
print("连接成功!")
# 尝试修改配置(会出错)
# DATABASE_CONFIG[0] = "new_host" # TypeError: 'tuple' object does not support item assignment
connect_to_database(DATABASE_CONFIG)
元组 vs 列表
# 性能比较
import time
# 创建大量数据
data_size = 10000000
# 测试列表创建
start = time.time()
list_data = list(range(data_size))
list_time = time.time() - start
print(f"列表创建时间:{list_time:.3f}秒")
# 测试元组创建
start = time.time()
tuple_data = tuple(range(data_size))
tuple_time = time.time() - start
print(f"元组创建时间:{tuple_time:.3f}秒")
# 测试访问速度
start = time.time()
for i in range(1000000):
_ = list_data[i]
list_access_time = time.time() - start
start = time.time()
for i in range(1000000):
_ = tuple_data[i]
tuple_access_time = time.time() - start
print(f"列表访问时间:{list_access_time:.3f}秒")
print(f"元组访问时间:{tuple_access_time:.3f}秒")
元组的主要特点:
- 不可变性:创建后不能修改
- 有序性:可以通过索引访问
- 可嵌套:可以包含其他元组
- 可哈希:可以作为字典的键
适用场景:
- 存储不应修改的数据
- 函数返回多个值
- 作为字典的键
- 需要更高性能的只读数据集合
版权声明:NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播