2026-09-23

Python 入门系列(六):列表与元组——批量管理数据

列表是一排编号的储物柜(下标从 0 开始!)。学习增删改查、切片、遍历与常用统计,区分可变列表与不可变元组,完成待办清单练习。

列表与元组:批量管理数据

预计学习时间:55 分钟 · 本系列第 6 / 10 课

一、一个变量装不下一个班级

记录全班 50 个人的分数,难道定义 score1、score2……score50?当然不。**列表(List)**让你用一个变量装一串数据。

**核心比喻:列表是一排编号的储物柜。**每个柜子有编号(从 0 开始数!),随时往柜子里放东西、取东西、换东西。

fruits = ["苹果", "香蕉", "橘子", "西瓜"]
          ┌────┬────┬────┬────┐
          │苹果│香蕉│橘子│西瓜│
          └────┴────┴────┴────┘
            [0]  [1]  [2]  [3]      ← 编号(下标)从 0 开始!
                                    最后一个也可以用 [-1] 表示

二、列表的增删改查

fruits = ["苹果", "香蕉", "橘子"]

# 查 —— 用下标访问
print(fruits[0])     # 苹果(第一个)
print(fruits[-1])    # 橘子(-1 = 最后一个)

# 改 —— 下标定位后直接赋值
fruits[1] = "葡萄"

# 增
fruits.append("西瓜")       # 追加到末尾(最常用)
fruits.insert(0, "草莓")   # 插入到下标 0 的位置

# 删
fruits.remove("橘子")   # 按值删除
last = fruits.pop()      # 删除并返回最后一个

print(fruits, "长度:", len(fruits))
苹果
橘子
['草莓', '苹果', '葡萄'] 长度: 3

三、切片:一次取一段

nums = [0, 1, 2, 3, 4, 5]
print(nums[1:4])    # [1, 2, 3]  含头不含尾
print(nums[:3])     # [0, 1, 2]  从头取到下标2
print(nums[3:])     # [3, 4, 5]  从下标3取到尾
print(nums[::2])    # [0, 2, 4]  每隔一个取
print(nums[::-1])   # [5, 4, 3, 2, 1, 0]  反转!

和 range 一样记住口诀:含头不含尾。

四、for 遍历列表:批量处理

scores = [85, 92, 58, 76]

for s in scores:
    print("分数:", s, "→", "及格" if s >= 60 else "不及格")

# 常用统计函数
print(max(scores), min(scores), sum(scores), sum(scores)/len(scores))
分数: 85 → 及格
分数: 92 → 及格
分数: 58 → 不及格
分数: 76 → 及格
92 58 311 77.75

五、常用方法速查

append(x) 末尾加 | insert(i, x) 插入 | remove(x) 按值删
pop() 弹出末尾   | sort() 原地排序   | reverse() 反转
count(x) 数个数  | index(x) 查下标   | "苹果" in fruits 判断存在

六、元组:上了锁的列表

元组(Tuple)用圆括号,创建后不能修改——适合存不该被改的数据,如坐标、星期几:

point = (3, 5)
print(point[0])        # 3,可以读
point[0] = 9           # 报错 TypeError!元组不可修改

# 解包:一次接收多个值,非常好用
x, y = point
print(x, y)            # 3 5

怎么选?数据会增删改 → 用列表;数据固定不变、只读 → 用元组(更安全)。

七、避坑指南

  • ❌ fruits[4] 当列表只有 3 个元素 → IndexError: list index out of range。先 len() 看看长度
  • ❌ nums = (1, 2, 3) 想排序修改 —— 元组没有这些方法
  • ❌ b = a 以为复制了列表 —— 其实两个名字指向同一个列表!改 b 也会改 a。真复制用 b = a.copy()

八、动手练习

练习:待办清单管理器。循环显示菜单:1 添加待办 2 查看全部 3 删除待办 0 退出,用列表存储。

todos = []
while True:
    print("\n1.添加 2.查看 3.删除 0.退出")
    choice = input("请选择:")
    if choice == "1":
        todos.append(input("新待办:"))
    elif choice == "2":
        for i, t in enumerate(todos, 1):
            print(i, t)
    elif choice == "3":
        n = int(input("删除第几条:"))
        todos.pop(n - 1)
    elif choice == "0":
        break

新知识:enumerate(列表, 1) 能同时拿到"序号和内容",从 1 开始编号。

下一课预告:比列表更聪明的查找方式——字典与集合。

← 返回教程列表
顶部