第4节:常用数据结构
很多时候,我们需要同时处理一组数据,比如一个班级所有学生的名字、一本书的章节标题、或者一个用户的配置信息。这就需要用到更复杂的数据结构。本章我们学习两种最常用、也最重要的结构:列表 和 字典。
1. 列表
想象一下你的购物清单,上面按顺序写着你要买的东西:牛奶、鸡蛋、面包...
列表 (List) 就是 Python 中用来存储一系列有序元素的数据结构。列表非常灵活,可以包含任何类型的数据(数字、字符串、布尔值,甚至其他列表),而且里面的元素可以被修改。
创建列表
使用方括号 []
来创建列表,元素之间用逗号 ,
分隔。
## 一个包含整数的列表
numbers = [1, 2, 3, 4, 5]
print(numbers)
## 一个包含字符串的列表
fruits = ["apple", "banana", "cherry"]
print(fruits)
## 一个包含混合类型的列表
mixed_list = [10, "hello", 3.14, True]
print(mixed_list)
## 一个空列表
empty_list = []
print(empty_list)
访问列表元素
列表中的每个元素都有一个索引(也可以叫下标),代表它在列表中的位置。索引从 0 开始! 第一个元素的索引是 0,第二个是 1,以此类推。
使用方括号 []
加上索引号来访问特定位置的元素。
fruits = ["apple", "banana", "cherry"]
## 访问第一个元素 (索引 0)
first_fruit = fruits[0]
print(first_fruit) # 输出: apple
## 访问第三个元素 (索引 2)
third_fruit = fruits[2]
print(third_fruit) # 输出: cherry
## 也可以使用负数索引,-1 代表最后一个元素,-2 代表倒数第二个,以此类推
last_fruit = fruits[-1]
print(last_fruit) # 输出: cherry
注意:如果使用的索引超出了列表的范围(比如列表只有3个元素,却尝试访问 fruits[3]
),程序会报错 IndexError
。
修改列表元素
列表中的值可以直接通过赋值运算符来修改。
colors = ["red", "green", "blue"]
print(colors) # 输出: ['red', 'green', 'blue']
## 修改第二个元素 (索引 1)
colors[1] = "yellow"
print(colors) # 输出: ['red', 'yellow', 'blue']
.append()
添加元素:使用列表的 .append()
方法可以在列表的末尾添加一个新元素。 (方法是与特定数据类型关联的函数,使用 .
来调用)。
my_list = [1, 2]
print(my_list) # 输出: [1, 2]
my_list.append(3)
print(my_list) # 输出: [1, 2, 3]
my_list.append("four")
print(my_list) # 输出: [1, 2, 3, 'four']
len()
获取列表长度:使用内置的 len()
函数可以获取列表包含多少个元素。
numbers = [10, 20, 30, 40]
length = len(numbers)
print(length) # 输出: 4
empty_list = []
print(len(empty_list)) # 输出: 0
列表还有很多其他操作(插入、删除、排序等),但对于入门,掌握创建、访问、修改、添加末尾元素和获取长度是最核心的。
2. 字典
想象一个储物柜,每个格子不是按顺序编号,而是贴着标签,比如“姓名”、“年龄”、“城市”。你想找某个信息,直接看对应的标签就行。
字典 (Dictionary, dict
) 是 Python 中用来存储一系列无序的键值对 (Key-Value Pair) 的数据结构。每个元素都由一个键 (Key) 和一个值 (Value) 组成,键是唯一的,用来查找对应的值。
创建字典
使用花括号 {}
来创建字典,每个键值对写成 key: value
的形式,键值对之间用逗号 ,
分隔。
## 创建一个表示个人信息的字典
person = {
"name": "李四",
"age": 30,
"city": "上海",
"is_student": False
}
print(person)
## 一个空字典
empty_dict = {}
print(empty_dict)
- 键 (Key): 通常是字符串或数字,必须是唯一的,不可变的类型。我们常用字符串作键。
- 值 (Value): 可以是任何数据类型(数字、字符串、布尔值、列表,甚至其他字典)。
访问字典元素
字典是无序的,所以不能像列表那样通过数字索引访问。我们使用键来访问对应的值,同样使用方括号 []
。
person = {
"name": "李四",
"age": 30,
"city": "上海"
}
## 访问 "name" 键对应的值
name = person["name"]
print(name) # 输出: 李四
## 访问 "age" 键对应的值
age = person["age"]
print(age) # 输出: 30
注意:如果使用的键在字典中不存在(比如 person["gender"]
),程序会报错 KeyError
。
修改字典元素
可以直接通过赋值修改字典中的键值:
person = {
"name": "李四",
"age": 30,
"city": "上海"
}
print(person)
## 修改 "city" 键的值
person["city"] = "北京"
print(person) # 输出: {'name': '李四', 'age': 30, 'city': '北京'}
添加键值对:
如果使用一个字典中不存在的键进行赋值,就会在字典中添加一个新的键值对。
person = {
"name": "李四",
"age": 30
}
print(person)
## 添加新的键值对 "occupation"
person["occupation"] = "工程师"
print(person) # 输出: {'name': '李四', 'age': 30, 'occupation': '工程师'}
列表 vs. 字典:
- 列表 (List): 有序集合,通过数字索引访问,适合存储顺序重要的数据。
- 字典 (Dictionary): 无序键值对集合,通过唯一的键访问,适合存储需要通过标签查找的数据。
3. 练习
- 创建一个包含你最喜欢的三部电影名称的列表(字符串)。
- 打印出列表中的第二部电影。
- 使用
.append()
方法向列表末尾添加一部你最近看的电影。 - 创建一个字典,包含你的“姓名 (name)”(字符串)、“出生年份 (birth_year)”(整数)和“喜欢的颜色 (favorite_color)”(字符串)。
- 打印出你的出生年份。
- 向字典中添加一个新的键值对,键是“城市 (city)”,值是你当前所在的城市(字符串)。
- 修改字典中“喜欢的颜色”的值为你现在最喜欢的颜色。
- 分别打印出修改后的列表和字典。
列表和字典是 Python 中极其重要的数据结构,熟练掌握它们是进行更复杂编程的基础。下一章我们将学习如何控制程序的执行流程,让程序能够根据不同的情况做出不同的反应。