一、列表(List):灵活的有序集合
1. 定义与基本操作
列表用方括号 []
定义,元素用逗号分隔,可动态修改。
# 创建列表
fruits = ["苹果", "香蕉", "橘子", "葡萄"]
numbers = [1, 3, 5, 7, 9]
# 访问元素(索引从0开始)
print(fruits[0]) # 输出:苹果
print(numbers[-1]) # 输出9(负数索引表示倒数)
# 修改元素
fruits[1] = "芒果" # 列表变为 ["苹果", "芒果", "橘子", "葡萄"]
2. 常用方法
方法 | 说明 | 示例 |
---|---|---|
append(item) | 在末尾添加元素 | fruits.append("梨") |
insert(index, item) | 在指定位置插入元素 | fruits.insert(1, "西瓜") |
remove(item) | 删除第一个匹配的元素 | fruits.remove("橘子") |
pop([index]) | 删除并返回指定位置元素 | fruits.pop(2) → "橘子" |
sort() | 排序(默认升序) | numbers.sort() |
reverse() | 反转列表 | fruits.reverse() |
3. 列表切片
切片语法:list[start:end:step]
(左闭右开区间)
nums = [0, 1, 2, 3, 4, 5]
print(nums[1:4]) # 输出 [1, 2, 3]
print(nums[::2]) # 输出 [0, 2, 4](步长为2)
二、元组(Tuple):不可变的序列
元组用圆括号 ()
定义,元素不可修改,适合存储固定数据。
# 创建元组
colors = ("红色", "绿色", "蓝色")
point = (3, 4)
# 访问元素
print(colors[1]) # 输出:绿色
# 尝试修改会报错!
# colors[1] = "黄色" # TypeError: 'tuple'不支持修改
# 特殊写法(单元素元组需加逗号)
single_item = (5,) # 不是 (5)
三、字典(Dictionary):键值对的映射
字典用花括号 {}
定义,通过键(key)快速访问值(value),键必须是不可变类型(如字符串、数字)。
1. 基本使用
# 创建字典
student = {
"name": "Alice",
"age": 18,
"courses": ["数学", "物理"]
}
# 访问值
print(student["name"]) # 输出:Alice
# 添加/修改键值对
student["gender"] = "女" # 添加新键
student["age"] = 19 # 修改已有键
# 删除键值对
del student["courses"]
2. 常用方法
方法 | 说明 | 示例 |
---|---|---|
keys() | 获取所有键 | student.keys() → dict_keys(['name', 'age']) |
values() | 获取所有值 | student.values() → dict_values(['Alice', 19]) |
items() | 获取所有键值对 | student.items() → dict_items([('name', 'Alice'), ('age', 19)]) |
get(key, default) | 安全获取值(避免KeyError) | student.get("score", 0) → 0 |
四、集合(Set):唯一元素的无序集合
集合用花括号 {}
或 set()
创建,元素唯一且无序,常用于去重和集合运算。
# 创建集合
fruits = {"苹果", "香蕉", "橘子", "苹果"} # 自动去重 → {"苹果", "香蕉", "橘子"}
numbers = set([1, 2, 3, 2, 1]) # → {1, 2, 3}
# 集合运算
a = {1, 2, 3}
b = {3, 4, 5}
print(a | b) # 并集 → {1, 2, 3, 4, 5}
print(a & b) # 交集 → {3}
print(a - b) # 差集 → {1, 2}
五、综合案例:学生成绩管理系统
# 用字典和列表管理学生信息
students = [
{"name": "Alice", "scores": [85, 90, 78]},
{"name": "Bob", "scores": [76, 88, 92]}
]
# 计算每位学生的平均分
for student in students:
avg_score = sum(student["scores"]) / len(student["scores"])
print(f"{student['name']}的平均分:{avg_score:.1f}")
# 输出:
# Alice的平均分:84.3
# Bob的平均分:85.3
七、总结与练习
核心知识点:
-
列表:动态修改的有序集合,支持增删查改。
-
元组:不可变序列,适合存储固定数据。
-
字典:键值对映射,快速查找数据。
-
集合:唯一元素的无序集合,支持集合运算。
-
字符串进阶:切片、格式化和常用方法。