Python 列表与元组的区别和联系

一、基本定义

  1. 列表(list)
    使用方括号 [] 定义,可变序列
lst = [1, 2, "python", 3.14]
  1. 元组(tuple)
    使用圆括号 () 定义,不可变序列
tup = (1, 2, "python", 3.14)
# 只有一个元素时必须加逗号
tup_single = (666,)

二、两者的联系

  1. 都属于 序列类型,支持下标索引、切片操作;
  2. 都可以存放任意数据类型(数字、字符串、对象、嵌套容器等);
  3. 支持通用运算符:+(拼接)、*(重复)、in(成员判断);
  4. 都可以使用 len() 获取长度、max() / min()(元素可比较时);
  5. 可以互相转换:list(元组)tuple(列表)

示例:

lst = [1, 2, 3]
tup = tuple(lst)    # 列表转元组
new_lst = list(tup) # 元组转列表

三、核心区别

对比项 列表 list 元组 tuple
符号 [] 方括号 () 圆括号
可变性 可变(mutable),支持增删改元素 不可变(immutable),创建后不能修改内部元素
修改元素 lst[0]=99、append()、pop()、remove() 均可执行 不能赋值修改、不能增删元素,强行修改直接报错
哈希特性 不可哈希,不能作为字典 key 可哈希,可以作为字典的键(key)
内存占用 相对更大 占用内存更小,效率更高
内置方法 方法很多:append、extend、pop、remove、sort 等 方法很少,只有 count()index()
适用场景 数据需要频繁增删修改 数据固定、不希望被意外修改;函数多返回值默认是元组

代码演示可变与不可变

# 列表可以修改
lst = [10, 20, 30]
lst[0] = 99
print(lst)  # [99, 20, 30]

# 元组不能修改,运行报错
tup = (10, 20, 30)
# tup[0] = 99   # TypeError: 'tuple' object does not support item assignment

重要陷阱:元组不可变指元组第一层引用不变。如果元组内嵌套列表,列表内部元素依旧可以修改!

t = (1, [2, 3])
t[1][0] = 99
print(t)  # (1, [99, 3])

四、使用场景建议

  1. 优先用列表
    数据经常变化:需要添加、删除、排序元素(存储动态数据、菜单、任务清单)。

  2. 优先用元组

  • 数据一旦确定不再改动(坐标、常量配置);
  • 作为字典键;
  • 函数多个返回值;
  • 大量只读数据,追求更高性能、节省内存。

五、总结

列表(list)和元组(tuple)是Python中两种常用序列容器。
联系:二者同为序列类型,支持索引、切片、拼接、成员运算,能够保存多种类型数据,并且可以通过list()tuple()实现相互转换。

核心区别在于可变性:列表是可变对象,创建之后能够新增、删除、修改内部元素,拥有丰富的操作方法,适合存储动态变化的数据;元组属于不可变对象,初始化完成后无法直接修改内部元素,仅提供count()index()两个方法。

性能上,元组占用内存更少、访问速度更快;特性上元组支持哈希,可以作为字典的键,而列表不可以。需要注意:元组不可变限制的是顶层元素引用,若元组内嵌列表,列表中的内容仍然能够修改。

实际开发中,频繁变动的数据选用列表,固定不变、防止意外篡改的数据选择元组。

posted @ 2026-07-22 21:49  dayday333  阅读(2)  评论(0)    收藏  举报