跳转至

三、容器:数据的柜子

第 9~17 课

这一块是 Python 的核心之一。学完最大的收获是:看到一份数据,就知道该用哪种「柜子」装它

第 9~10 课 列表 list:一张顺序清单

列表 = 按顺序排好的清单,用方括号。

tenants = ["张三", "李四", "王五"]
tenants[0]      # 张三(下标从 0 开始)
tenants[-1]     # 王五(负数下标,倒数第一个)
len(tenants)    # 3

列表能增删改(这些叫「方法」,写法是 列表.方法()):

tenants.append("赵六")     # 末尾加
tenants.insert(1, "赵六")  # 指定位置插
tenants.remove("李四")     # 按值删
tenants.pop()             # 删最后一个
tenants[0] = "王五"       # 改:下标直接赋值

removepop 的区别:前者「我知道要删谁」,后者「把最后一个拿走」。

第 11 课 切片与排序

rents[0:3]      # 切片,前三个(含头不含尾)
rents.sort()    # 从小到大,直接改原列表
rents.reverse() # 倒过来

第 12 课 元组 tuple:不可变的清单

和列表几乎一样,区别只一条:列表能改,元组不能改。用圆括号。

room = (101, 80, 5000)   # 房号、面积、押金
room[0]          # 101(能读)
room[0] = 102    # ❌ TypeError: 'tuple' object does not support item assignment

比喻:列表是可涂改的草稿,元组是盖章生效的正式文件。存「一组固定不变的信息」时用它,还能防止手滑改错。

第 13~14 课 字典 dict:登记簿

列表按位置找东西,字典按名字找:

rents = {"张三": 4500, "李四": 5200}
rents["张三"]       # 查 → 4500
rents["赵六"] = 6100 # 加
rents["张三"] = 4800 # 改

安全取值get()——查一个不存在的键,[] 会报错崩溃,get() 则回你一个默认值:

rents["王五"]                 # ❌ KeyError
rents.get("王五", "查无此人")  # → "查无此人"

查看方法:keys() 看名字、values() 看数、items() 成对列出。

第 15 课 集合 set:去重与对比

集合自动去重,还能做三种运算:

a & b   # 交集:两边都有
a - b   # 差集:只在 a
a | b   # 并集:合并去重

两份名单找「重复的」和「独有的」,用它最省事。

(注意:集合不保证顺序,输出顺序和输入不一样是正常的。需要顺序就用列表。)

第 16 课 容器怎么选

要干什么 用什么
排队 + 要改 列表 []
排队 + 不许改 元组 ()
按名查 字典 {}
去重 / 对比 集合 {}

第 17 课 字典列表:表格的真相

一张表格 = 一个列表,一行 = 一个字典。 这是实际工作里最常用的结构。

tenants = [
    {"姓名": "张三", "房号": 101, "月租": 4500, "状态": "已交"},
    {"姓名": "李四", "房号": 102, "月租": 5200, "状态": "欠费"},
]
tenants[0]          # 第一个人(整个字典)
tenants[1]["月租"]   # 第二个人的月租 → 5200

[0] 定位到「第几行」,再用 ["月租"] 定位到「哪一列」——和看 Excel 的感觉一样。