大家好啊!我又回来更新啦
,今天重新学习了元组,其实元组也没什特别的主要是他的不可变性t1 = () #空元祖t2 = ('abc',) # 单一元素 切记 单个元素 要加上,t3 = ('abc',12,3.14,13,[1,2]) # 放多个元素 t4 = 'abc',12,13 #特例情况 不建议这么操作
#我先定义个元组my_tuple = (10,20,30,40,50)
print("\n--- 下标和切片 ---")print("第一个元素 my_tuple[0]:", my_tuple[0]) # 10 print("最后一个元素 my_tuple[-1]:", my_tuple[-1]) # 50
print("索引1到3(不含3)my_tuple[1:3]:", my_tuple[1:3]) # (20, 30)print("步长为2 my_tuple[::2]:", my_tuple[::2]) # (10, 30, 40)print("反转元组 my_tuple[::-1]:", my_tuple[::-1]) # (50,40, 20, 30, 20, 10)
# 查找某个值第一次出现的索引,如果不存在会抛出 ValueError print("\n--- index 函数 ---")pos_20 = my_tuple.index(20)print("第一个20的索引:", pos_20) # 1 # 可以指定查找的起始和结束范围 pos_20_from_index2 = my_tuple.index(20, 2) # 从索引2开始找20 print("从索引2开始找20的索引:", pos_20_from_index2) # 3
# 4. count 函数 # 计算某个值在元组中出现的次数 print("\n--- count 函数 ---")count_20 = my_tuple.count(20)print("20出现的次数:", count_20) # 2 count_100 = my_tuple.count(100)print("100出现的次数:", count_100) # 0
# 获取元组的长度(元素个数)print("\n--- len 函数 ---")length = len(my_tuple)print("元组长度:", length) # 5 print("空元组长度:", len(empty_tuple)) # 0
# 可以依次访问元组中的每个元素 print("\n--- for 循环遍历 ---")print("遍历 my_tuple:")for item in my_tuple: print("元素:", item)# 如果需要同时获取索引和值,可以使用 enumerate print("带索引遍历:")for idx, val in enumerate(my_tuple): print(f"索引 {idx}: 值 {val}")
1. 存储不希望被修改的数据
当你有一组常量或固定配置项,不希望程序中意外修改时,用元组保护数据安全。
DAYS_OF_WEEK = ("周一", "周二", "周三", "周四", "周五", "周六", "周日")RGB_COLOR = (255, 128, 0) # 颜色值不应被改动
2. 函数返回多个值
Python 函数返回多个对象时,实际上是将它们打包成一个元组,调用方可以直接解包。
def get_user(): name = "Alice" age = 28 return name, age # 返回的是元组 (name, age)user_name, user_age = get_user() # 解包
3. 多变量同时赋值(元组解包)
一行代码交换变量、同时给多个变量赋值,背后都是元组的打包与解包。
a, b = 1, 2 # (1,2) → 解包赋值 a, b = b, a # 交换值:先构建元组 (b, a) 再解包 x, *rest = (1, 2, 3) # 扩展解包 rest = [2, 3]
4. 作为字典的键(可哈希)
元组不可变 → 可哈希,因此可以作为字典的键或集合的元素,而列表做不到。
location = {}location[(35.68, 139.76)] = "东京" # 用坐标元组做键 print(location[(35.68, 139.76)])
5. 表示结构化数据
用元组表示一条记录(如数据库一行),字段顺序固定且含义清晰。
student = ("张三", "S001", 90.5) # (姓名, 学号, 成绩)
6. 性能优化与内存节省
元组比列表创建和访问速度更快,占用内存更小。在大量读取且无需修改的数据集(如缓存、配置)中,优先使用元组能提升效率。
7. 可变长度参数传递(*args)
函数中 *args 将所有多余的位置参数打包成一个元组,方便处理不确定数量的参数。
def sum_all(*args): total = 0 for num in args: # args 是一个元组 total += num return total print(sum_all(1, 2, 3, 4)) # 10
8. 格式化字符串与数据库查询结果
很多库返回的数据行(如 sqlite3 的 fetchone())是以元组形式呈现,保证数据只读。
import sqlite3 conn = sqlite3.connect(":memory:")cursor = conn.execute("SELECT 1, 'hello'")row = cursor.fetchone() # (1, 'hello') 是一个元组 print(row[0], row[1])