Appearance
集合类型——列表、元组、字典、集合
概念讲解
单个数据用变量存就够了,但如果要存一组数据,就需要集合类型。
Python 提供了四种主要的集合类型,各有用途:
| 类型 | 可变性 | 有序性 | 用途 |
|---|---|---|---|
list | 可变 | 有序 | 按顺序存一组数据,需要增删改 |
tuple | 不可变 | 有序 | 存一组不变的数据,作为函数返回值 |
dict | 可变 | 无序(3.7+按插入顺序) | 键值对映射,按名字查找 |
set | 可变 | 无序 | 存一组不重复的值,用于去重/集合运算 |
代码示例
列表:学生成绩管理
python
scores = [85, 92, 78, 96, 88, 73, 91]
# 常用操作
scores.append(82) # 追加
average = sum(scores) / len(scores)
print(f"平均分: {average:.1f}")
# 筛选出高于平均分的成绩
above_avg = [s for s in scores if s > average]
print(f"高于平均分: {above_avg}")
# 排序(不影响原列表,返回新列表)
sorted_scores = sorted(scores, reverse=True)
print(f"排名: {sorted_scores}")字典:通讯录
python
contacts = {
"Alice": "13800138001",
"Bob": "13900139002",
"Charlie": "13700137003"
}
# 按名字查找
name = "Bob"
if name in contacts:
print(f"{name}: {contacts[name]}")
else:
print(f"{name} 不在通讯录中")
# 统计单词出现次数(字典的经典用法)
text = "apple banana apple cherry banana apple"
word_count = {}
for word in text.split():
word_count[word] = word_count.get(word, 0) + 1
print(word_count) # {'apple': 3, 'banana': 2, 'cherry': 1}集合:去重与交集
python
# 两门课的学生名单
course_a = {"Alice", "Bob", "Charlie", "David"}
course_b = {"Charlie", "David", "Eve", "Frank"}
print("两门课都上的学生:", course_a & course_b) # {'Charlie', 'David'}
print("至少上一门课的学生:", course_a | course_b) # 合并
print("只上A课的学生:", course_a - course_b) # {'Alice', 'Bob'}练习题
题目:有一批购物记录,每条记录格式为 "用户名:商品名称:数量",请统计每个用户购买的商品种类数量。
示例输入:
张三:苹果:3
李四:香蕉:2
张三:香蕉:1
王五:苹果:2
李四:苹果:5
王五:香蕉:3参考答案
python
records = [
"张三:苹果:3",
"李四:香蕉:2",
"张三:香蕉:1",
"王五:苹果:2",
"李四:苹果:5",
"王五:香蕉:3"
]
user_items = {}
for record in records:
user, item, qty = record.split(":")
if user not in user_items:
user_items[user] = set()
user_items[user].add(item)
print("每位用户购买的商品种类数:")
for user, items in user_items.items():
print(f" {user}: {len(items)}种({items})")关键思维:
- 用
set自动去重,保证每个商品只被统计一次 - 字典的 key 是用户名,value 是
set(商品集合) get(user, set())是初始化字典的安全写法