当前位置:首页>python>Python 数据容器:组织和管理数据

Python 数据容器:组织和管理数据

  • 2026-10-11 07:05:18
Python 数据容器:组织和管理数据

Python 数据容器:组织和管理数据

Rs知识库 · Python 零基础入门系列 · 第三篇

前两篇我们学会了变量、条件判断和循环。但变量只能存一个值——如果要把全班同学的成绩、超市的商品清单、通讯录里的联系人管理起来呢?这一篇我们来学习 Python 的四大数据容器:列表、元组、字典、集合,并用它们做一个「超市购物清单管理器」。

本文目录

①四种数据容器怎么选?

②列表 List:增删改查与切片

③列表推导式:一行搞定

④字典 Dict:键值对存储

⑤元组、集合与字符串进阶

⑥实战项目:超市购物清单管理器

四种数据容器怎么选?

变量只能存一个值,但实际中我们经常需要管理一堆数据。Python 提供了四种容器,各有不同用途。记住这个选择口诀:要排序用列表,不能改用元组,要查键找值用字典,要去重用集合。

列表 List [ ]

有序、可改、允许重复。最常用的容器。

[1, 2, 3]

元组 Tuple ( )

有序、不可改。保护不允许被修改的数据。

(3, 5)

字典 Dict { }

键值对存储,像电话簿一样按名字查号码。

{"name": "小明"}

集合 Set { }

无序、自动去重。适合标签、交集运算。

{"Python", "编程"}

列表 List:增删改查与切片

列表是 Python 中最常用的数据容器。用方括号 [] 创建,里面的元素按顺序排列,每个元素有一个从 0 开始的索引号。

fruits = ["苹果", "香蕉", "橘子", "葡萄"]# 查:用索引取值(从 0 开始)print(fruits[0])    # 苹果print(fruits[-1])   # 葡萄(倒数第一个)# 增:append 末尾添加,insert 指定位置fruits.append("西瓜")fruits.insert(1, "芒果")# 删:remove 按值删,pop 按索引删fruits.remove("香蕉")fruits.pop()          # 删除最后一个# 改:用索引直接修改fruits[0] = "红富士"# 切片:取一段子列表 [起始:结束]print(fruits[1:3])  # 索引 1 和 2(不含 3)

切片是 Python 的一大特色。list[a:b] 取索引 a 到 b-1 的元素,list[:3] 取前 3 个,list[2:] 从第 3 个取到最后。

列表常用内置函数

len(list) 长度

max/min(list) 最值

sorted(list) 排序

x in list 是否包含

列表推导式:一行搞定

列表推导式是 Python 最优雅的语法之一,能用一行代码创建或筛选列表。对比一下传统写法和推导式写法:

# 传统写法:生成 1~10 的平方squares = []for i inrange(1, 11):    squares.append(i ** 2)# 列表推导式:一行搞定!squares = [i ** 2for i inrange(1, 11)]# 加条件筛选:只要偶数的平方even_sq = [i ** 2for i inrange(1, 11) if i % 2 == 0]# 快速算总价cart = [{"price": 8.5}, {"price": 5.0}, {"price": 12.0}]total = sum(item["price"] for item in cart)

💡 推导式的固定格式:[表达式 for 变量 in 可迭代对象 if 条件]。其中 if 条件可选。掌握这个模式,很多 for 循环都能简化成一行。

字典 Dict:键值对存储

字典就像一本电话簿——你通过名字(键)找到对应的电话号码(值)。用花括号 {} 创建,键和值之间用冒号分隔。

scores = {"语文": 90, "数学": 95, "英语": 88}# 查:用键取值print(scores["数学"])   # 95print(scores.get("物理", 0))  # 0(键不存在时返回默认值)# 增/改:直接用键赋值scores["物理"] = 92# 新增scores["语文"] = 93# 修改# 删del scores["英语"]# 遍历:同时获取键和值for subject, score in scores.items():print(f"{subject}:{score} 分")

🎯 字典 + 列表是实际编程中最常见的组合。比如一个商品可以用字典表示 {"name": "牛奶", "price": 8.5},然后用列表存放多个商品——这就是后面购物清单的核心结构。

元组、集合与字符串进阶

除了列表和字典,还有两种容器需要了解:

元组 Tuple

创建后不能修改,适合存储不应被改变的数据(如坐标、配置)。

point = (3, 5)x, y = point  # 解包

集合 Set

自动去重,支持交集、并集、差集运算。

tags = {"Py", "编程", "Py"}# 结果只有 2 个元素

字符串进阶方法:字符串本身也可以像列表一样用索引和切片,此外还有很多实用方法:

text = "  Hello, Python World!  "print(text.strip())       # 去首尾空格print(text.strip().split(","))  # 按逗号拆成列表print(text.replace("World", "世界"))  # 替换# join:用指定字符连接列表words = ["Python", "is", "fun"]print(" ".join(words))  # "Python is fun"

实战项目:超市购物清单管理器

我们来做一个命令行版的购物清单:支持添加商品、删除商品、修改数量、查看清单和自动计算总价。数据结构用字典嵌套列表——每个商品是一个字典,所有商品放在一个列表里。

字典嵌套列表列表推导式统计字符串格式化账单集合去重校验

# 超市购物清单管理器cart = []defadd_item(name, qty, price):"""添加商品,已有则增加数量"""for item in cart:if item["name"] == name:            item["qty"] += qtyprint(f"已更新 {name},数量:{item['qty']}")return    cart.append({"name": name, "qty": qty, "price": price})print(f"已添加:{name} x{qty}")defremove_item(name):"""删除商品"""for item in cart:if item["name"] == name:            cart.remove(item)print(f"已删除:{name}")returnprint(f"未找到商品:{name}")defshow_cart():"""显示购物清单"""ifnot cart:print("购物车为空")return    total = 0print(f"\n{'='*35}")print("  🛒 购物清单")print(f"{'='*35}")for item in cart:        sub = item["qty"] * item["price"]        total += subprint(f" {item['name']:8s} x{item['qty']}  ¥{sub:.2f}")print(f"{'─'*35}")print(f" 共 {len(cart)} 件商品,总计 ¥{total:.2f}")print(f"{'='*35}\n")# 主程序add_item("牛奶", 2, 8.5)add_item("面包", 1, 5.0)add_item("牛奶", 3, 8.5)  # 已有,数量+3show_cart()

💡 关键设计思路

数据结构:每个商品是一个字典 {"name": "牛奶", "qty": 2, "price": 8.5},购物车是所有商品的列表。

添加逻辑:先遍历购物车看是否已有同名商品,有则增加数量,没有则新增一条记录。

格式化输出:f"{'='*35}" 用字符串重复生成分割线,{total:.2f} 保留两位小数。

动手练习

1

随机数统计简单

创建包含 10 个随机数的列表,找出最大值、最小值和平均值。

2

通讯录系统中等

用字典实现通讯录:支持添加联系人(姓名→电话)、按姓名查询、列出所有人。

3

词频统计器挑战

输入一段英文文本,用 split() 拆分,用字典统计每个单词出现的次数。

总结与下一步

掌握了数据容器,你就能管理真正有意义的数据了。在这篇文章中,你学会了:

●四种数据容器的特点和适用场景

●列表的增删改查、切片和排序操作

●列表推导式一行代码完成创建和筛选

●字典的键值对操作和字典+列表的组合模式

●完成了一个购物清单管理器,综合运用所有容器

下一篇预告

函数——代码复用的艺术。你将学会用 def 定义函数、理解参数传递和返回值、掌握作用域规则,用高阶函数 map/filter/sorted 写出更优雅的代码。

def 定义函数参数与返回值Lambda 匿名函数map/filter

Rs知识库 · Python 零基础入门系列

觉得有用?点个「在看」支持一下 👇

最新文章

随机文章