当前位置: 首页 > news >正文

【常忘tag】Python中的元组和列表

一、前言

  • 在Python中,元组(Tuple)和列表(List)是两种常用的序列类型
  • 虽然它们在某些方面相似,但在特性和用途上有显著区别。

二、定义方式

  • 列表(List):使用方括号 [ ] 定义,元素之间用逗号分隔
my_list = [1, 2, "apple", True]
  • 元组(Tuple):使用圆括号 ( ) 定义,元素之间用逗号分隔
    • 注意:单元素元组需在末尾加逗号,如 (1,)。
my_tuple = (1, 2, "banana", False)
single_element_tuple = (5,)  # 必须加逗号

三、可变性(Mutability)

  • 列表是可变的(Mutable):支持动态修改(增、删、改元素)
my_list = [1, 2, 3]
my_list.append(4)       # 添加元素 → [1, 2, 3, 4]
my_list[0] = 10        # 修改元素 → [10, 2, 3, 4]
my_list.pop()          # 删除末尾 → [10, 2, 3]
  • 元组是不可变的(Immutable):创建后不能修改,否则会抛出 TypeError
my_tuple = (1, 2, 3)
my_tuple[0] = 10  # 报错:TypeError

四、性能差异

  • 元组的创建和访问速度更快
    • 由于元组不可变,Python在内存中对其进行了优化。
    • 在处理大量数据时,元组的性能略优于列表。
  • 列表占用更多内存
    • 列表需要额外空间存储指针以支持动态修改,而元组的内存分配是静态的。

五、用途场景

  • 列表的典型用途
    • 存储需要频繁修改的数据集合(如用户输入、动态配置)。
    • 需要调用多种内置方法(如 sort(), reverse())的场景。
# 动态管理任务列表
tasks = ["read", "write"]
tasks.append("debug")  # 添加任务
  • 元组的典型用途
    • 存储不可变数据(如常量配置、坐标点)。
    • 作为字典的键(因为键必须是不可变类型)。
    • 函数返回多个值时(如 return (x, y))
# 坐标点(不可变)
point = (3, 5)
# 作为字典的键
locations = {(1, 2): "A", (3, 4): "B"}
# 多返回值
return (res1,res2)

六、内置方法对比

  • 列表支持丰富的方法
my_list = [3, 1, 2]
my_list.sort()          # 排序 → [1, 2, 3]
my_list.reverse()       # 反转 → [3, 2, 1]
my_list.insert(0, 10)   # 插入 → [10, 3, 2, 1]
  • 元组仅有少数方法:仅支持 count( ) 和 index( )
my_tuple = (1, 2, 2, 3)
print(my_tuple.count(2))  # 输出 2(元素2出现的次数)
print(my_tuple.index(3))  # 输出 3(元素3的索引)

七、其他操作

  • 共同支持的操作
    • 索引访问:my_list[0] 或 my_tuple[0]。
    • 切片操作:my_list[1:3] 或 my_tuple[1:3]。
    • 迭代:for item in my_list 或 for item in my_tuple。
    • 包含检查:if “apple” in my_list。
  • 类型转换:可通过 list() 和 tuple() 相互转换
list_to_tuple = tuple([1, 2, 3])  # (1, 2, 3)
tuple_to_list = list((1, 2, 3))    # [1, 2, 3]

八、总结

在这里插入图片描述

  • 选择建议
    • 需要频繁修改数据 → 列表
    • 数据需长期不变或作为哈希键 → 元组

相关文章:

  • 如何在VSCode中更换默认浏览器:完整指南
  • 白杨SEO:不到7天,白杨SEO博客网站百度搜索显示和排名恢复正常!顺带说说上海线下GEO聚会分享和播客红利
  • 新一代请求库niquests使用入门
  • CI/CD 实践:实现可灰度、可监控、可回滚的现代部署体系
  • 10.15 LangChain v0.3重磅升级:Tool Calling技术颠覆大模型工具调用,效率飙升300%!
  • 第 25 届中国全电展即将启幕,构建闭环能源生态系统推动全球能源转型
  • Easyi3C 新产品发布:I2C Host Adapter
  • 关于百度地图JSAPI自定义标注的图标显示不完整的问题(其实只是因为图片尺寸问题)
  • 交叉引用、多个参考文献插入、跨文献插入word/wps中之【插入[1-3]、连续文献】
  • AcWing 223. 阿九大战朱最学——扩展欧几里得算法
  • 高性能锁机制 CAS:Java 并发编程中的深度剖析
  • 一、内存调优
  • 低功耗:XILINX FPGA如何优化功耗?
  • 人工智能(AI)与BIM:建筑业创新实践的深度融合
  • 供应商管理有哪些风险点?
  • C++11特性
  • HTML向四周扩散背景
  • DriveGenVLM:基于视觉-语言模型的自动驾驶真实世界视频生成
  • C#中的ThreadStart委托
  • 代理IP高可用性与稳定性方案:负载均衡、节点健康监测与智能切换策略
  • 解读|俄方称愿与乌方共同起草和平备忘录,特朗普多轮通话外交有效吗?
  • 马上评|房屋“注胶堵漏”骗局何以屡屡得逞
  • 雷军:小米芯片采用3纳米制程,首款SUV“YU7”即将发布
  • LPR名副其实吗?如果有所偏离又该如何调整?
  • 被围观的“英之园”,谁建了潮汕天价违建?
  • 当“小铁人”遇上青浦,看00后如何玩转长三角铁三