DEMO · 办一下样品
LEARN · 一节课的 PPT 01 / 09

Python 入门 · 第 3 课
列表跟字典 — 数据结构第一课

从「一堆并列变量」到「一个容器装一切」 — 60 分钟搞懂 Python 最常用的两个内置类型。

讲师 王某 · banyixia 工程师 / 60 分钟 / 新手向 · 无需编程基础

办一下 · 教学课件 · teaching-slides skill · 含练习答案
OUTCOMES 02 / 09

这节课学完,你能做什么

4 条 SMART outcomes · 课后会用一份小测验验收

SMART · Specific / Measurable / Achievable / Relevant / Time-bound
OUTLINE 03 / 09

课程地图 · 知识图谱

Python 数据结构 列表 list [1, 2, 3] · 创建 / 索引 · 切片 [:n] · append / remove · for 遍历 字典 dict {"k": "v"} · 创建 / key 访问 · keys / values · 增删改 key · items() 遍历 选哪个? 有顺序 → 列表 · 要查找 → 字典
中心 → 两大分支 → 底部决策 · 90 秒带你过一遍
HOOK · 真实场景 04 / 09

想象你要写一个 联系人 App

每个联系人有 名字 + 电话 + 邮箱。如果用并列变量记 100 个人 ——

# 噩梦版 · 400 个变量,改一个人要找 4 行
person_1_name = "小王";  person_1_phone = "139..."
person_2_name = "小李";  person_2_phone = "138..."
# ... 再来 98 组,你疯了

Python 给你 两个工具:列表(装一队人) + 字典(装一个人的所有字段)。
5 行代码就能搞定。今天学完,你就能写这个 App 的核心。

每节课都从一个真实的痛开始 — 不是为学语法而学语法
KNOWLEDGE 1 · LIST 05 / 09

核心知识点 1 · 列表 list

概念 Concept

顺序的容器,可以装任意类型,可改可删

类比 Analogy

像「书架」 — 有 1 号 2 号位置,可换书、可加书。

例题 Example

# 创建一个朋友列表
friends = ["小王", "小李", "小张"]
print(friends[0])         # 小王 · 索引从 0 开始
friends.append("小赵")    # 末尾添加
friends.remove("小李")    # 按值删除
print(friends)            # ['小王', '小张', '小赵']

总结:列表 = [元素] · 用数字索引访问 · 顺序重要

列表 · 第 5 / 9 页
KNOWLEDGE 2 · DICT 06 / 09

核心知识点 2 · 字典 dict

概念 Concept

无顺序的 key → value 容器,key 不能重复。

类比 Analogy

像「字典」 — 用单词查释义,你不会两个一样的词条。

例题 Example

# 用字典存一个联系人
friend = {"name": "小王", "phone": "13900001234", "email": "x@y.com"}
print(friend["name"])      # 小王 · 用 key 访问
friend["age"] = 28         # 添加新 key
del friend["email"]        # 删除 key
print(friend)              # {'name':'小王','phone':'139..','age':28}

总结:字典 = {key: value} · 用 key 访问 · 顺序无关

字典 · 第 6 / 9 页
CHOOSE 07 / 09

列表 vs 字典 · 该选哪一个?

用列表 · LIST

· 数据有顺序(报名表、排队、消息流)
· 需要挨个遍历(for 循环全跑一遍)
· 同类型同结构的一组(全是名字、全是分数)
· 不需要按 key 快速查找

用字典 · DICT

· 数据有属性(一个人:name/age/city)
· 需要按 key 快速查(根据名字找电话)
· 字段名比顺序更重要
· 一条记录里字段类型不同

需要顺序? 是 → 列表 | 需要 key 查找? 是 → 字典 | 两者都要? 列表里装字典
真实场景常常是「列表里装字典」 — 联系人录就是这种
PRACTICE 08 / 09

课堂练习 · 4 题 · 从易到难

动手敲,不要只看 · 卡住先想 30 秒 · 再翻下一页对答案

Q1
给定 nums = [3, 1, 4, 1, 5, 9, 2, 6],打印第 3 个元素列表长度
Q2★★
创建一个字典存你自己的信息(name / age / city),然后把 age 改大 1,并加一个 "hobby" key。
Q3★★★
给一个名字列表 names = ["小王","小李","小张"],用 for 循环打印 "你好, 小王!" 这种问候,共 3 行。
Q4★★★★
给联系人列表(每个是 dict,含 namephone),写一个查电话功能:输入名字打印对应电话,找不到打印「查无此人」。
建议时间:Q1 2 分 / Q2 4 分 / Q3 6 分 / Q4 10 分 = 22 分钟
ANSWER · 详解 09 / 09

答案 · 思路 · 易错点

A1 · ★
nums = [3,1,4,1,5,9,2,6]
print(nums[2])       # 第 3 个 → 索引 2
print(len(nums))     # 长度 8

第 3 个 = 索引 2(从 0 开始数);len() 拿长度。

写成 nums[3] 会拿到第 4 个;nums[8] 直接 IndexError

A2 · ★★
me = {"name":"王", "age":28, "city":"上海"}
me["age"] = me["age"] + 1
me["hobby"] = "骑车"

字典 改值加 key 是同一个语法:d[k] = v,key 存在就改、不存在就新建。

me.age(点号)不行 — 字典只认 [...] 方括号。

A3 · ★★★
names = ["小王","小李","小张"]
for n in names:
    print(f"你好, {n}!")

列表能直接 for x in list 遍历,f"..." 是格式化字符串,把变量拼进去。

for i in range(3) 然后 names[i] 也对,但更啰嗦;直接迭代元素是 Python 习惯。

A4 · ★★★★
book = [{"name":"小王","phone":"139..."},
        {"name":"小李","phone":"138..."}]
def find(q):
    for p in book:
        if p["name"] == q:
            return p["phone"]
    return "查无此人"
print(find("小王"))

「列表装字典」是真实数据的常见结构:遍历列表 → 比较 key → 找到 return。

return "查无此人" 找不到时返回 None;直接 p["phone"] 不判断 key,改用 p.get("phone","") 更稳 — 否则 KeyError

第一次写不出来很正常 · 下节课带「函数」回来再深挖
我也要办这一份
本页面由 办一下|banyixia.com AI 生成