当前位置:首页python > 正文

Python 基础:list 与 tuple 的主要区别

作者:野牛程序员:2025-12-22 10:40:03python阅读 2018
Python 基础:list 与 tuple 的主要区别
# /*
# Python 基础:list 与 tuple 的主要区别
# --------------------------------------------------------
# 二者都是可存储任意类型的序列容器,但设计目标与特性不同。
# */

# --------------------------------------------------------
print("一、是否可变")

# list 可变,可增删改
lst = [1, 2, 3]
print("list 修改前:", lst, "id =", id(lst))
lst.append(4)
print("list 修改后:", lst, "id =", id(lst))

# tuple 不可变,内容无法修改
t = (1, 2, 3)
print("\ntuple 示例:", t, "id =", id(t))
# t.append(4)  # 会报错:tuple 无 append

# --------------------------------------------------------
print("\n二、性能差异")

import time

# list vs tuple 创建性能对比
n = 10_0000

start = time.time()
a = [i for i in range(n)]
end = time.time()
print("list 创建耗时:", end - start)

start = time.time()
b = tuple(range(n))
end = time.time()
print("tuple 创建耗时:", end - start)

# tuple 不可变 → 内存布局更紧凑,遍历速度略快

# --------------------------------------------------------
print("\n三、使用场景差异")

# list:适合需要频繁修改的场景
shopping = ["苹果", "香蕉"]
shopping.append("橙子")
print("list 场景示例:", shopping)

# tuple:适合固定数据、保护内容不被修改
point = (10, 20)
print("tuple 场景示例: 坐标点", point)

# --------------------------------------------------------
print("\n四、作为字典键的能力")

# list 不可作为 dict 键(可变)
try:
    d = {[1, 2]: "no"}   # 会报错
except Exception as e:
    print("list 作为字典键:错误 →", e)

# tuple 可用作 dict 键(不可变)
d = {(1, 2): "ok"}
print("tuple 作为字典键:示例 →", d)

# --------------------------------------------------------
# 要点总结:
# 1) list 可变,tuple 不可变;
# 2) tuple 内存更紧凑,访问速度更快;
# 3) list 适合频繁修改的数据结构;
# 4) tuple 适合固定集合,如坐标、配置、返回值打包;
# 5) tuple 可作为字典键,list 不可;
# 6) 不可变特性让 tuple 更安全,可用于常量结构。
# */

#
# 一、是否可变
# list 修改前: [1, 2, 3] id = 2036741624192
# list 修改后: [1, 2, 3, 4] id = 2036741624192
#
# tuple 示例: (1, 2, 3) id = 2036744007296
#
# 二、性能差异
# list 创建耗时: 0.0029969215393066406
# tuple 创建耗时: 0.001001119613647461
#
# 三、使用场景差异
# list 场景示例: ['苹果', '香蕉', '橙子']
# tuple 场景示例: 坐标点 (10, 20)
#
# 四、作为字典键的能力
# list 作为字典键:错误 → unhashable type: 'list'
# tuple 作为字典键:示例 → {(1, 2): 'ok'}


野牛程序员教少儿编程与信息学奥赛-微信|电话:15892516892
野牛程序员教少儿编程与信息学竞赛-微信|电话:15892516892
  • Python 基础:list 与 tuple 的主要区别
  • 相关推荐

    最新推荐

    热门点击