06 Python 列表 vs 元组,选对事半功倍

在 python 中列表(List)和元组(Tuple)都是序列类型,但它们在各方面有着各种的不同

一.可变性 - 最关键区别

列表(List) 元组(Tuple)
可变性 可变(Mutable) 不可变(Immutable)
操作示例 list.append(1) tuple[0] = 1 会报错

二.语法

# 列表用方括号
list_example = [1,2,3,4,"a"]

# 元组用圆括号
tuple_example = (1,2,3,4,"a")

# 单元素元组必须加逗号
single_element_tuple = (42, )  # 正确
not_a_tuple = (42)            # 实际是整数 42

三.性能差异

列表 元组
创建速度 较慢(需动态分配内存) 更快(固定内存分配)
内存占用 更大(预留扩展空间) 更小(精确分配)
迭代速度 基本一致 基本一致

四.使用场景

列表的场景

  • 需要频繁修改数据集合(增删改)
  • 存储同类型数据(如所有数字)
  • 需要用到列表专属方法(.append(),insert(),remove()等)

元组的场景

  • 作为字典的健(因为不可变)
  • 函数返回多个值(如return (x,y)
  • 保护数据不被意外修改
  • 存储异构数据(如坐标(x,y,z)

五.方法对比

# 列表方法很多
lst = [1,2,3]
lst.append(4)       # [1,2,3,4]
lst.insert(0,0)     # [0,1,2,3,4]

# 元组只有两个方法
tpl = (1,2,3)
print(tpl.count(2))  # 1 统计元素出现次数
print(tpl.index(3))  # 2 查找元素位置

六.两者内存机制

a = [1,2,3]
b = a
b.append(4)
print(a) # [1,2,3,4] (列表是引用传递)

x = (1,2,3)
y = x
# y += (4,) 会创建新的元组,不影响原x

七.两者之间转换

lst = [1,2,3]
tpl = tuple(lst) # 列表转元组 -> (1,2,3)

tpl =("a","b","c")
lst = list(tpl) # 元组转列表 -> ['a','b','c']

总结

列表

方括号,内容可变,操作灵活,适合动态数据

元组

圆括号,内容锁定,安全高效,适合固定数据

当需要数据不可变时用元组,需要频繁修改时用列表。两者选择直接影响代码的安全性和性能

你可能感兴趣的:(Python,python,开发语言)