第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. 练习

  1. 创建一个包含你最喜欢的三部电影名称的列表(字符串)。
  2. 打印出列表中的第二部电影。
  3. 使用 .append() 方法向列表末尾添加一部你最近看的电影。
  4. 创建一个字典,包含你的“姓名 (name)”(字符串)、“出生年份 (birth_year)”(整数)和“喜欢的颜色 (favorite_color)”(字符串)。
  5. 打印出你的出生年份。
  6. 向字典中添加一个新的键值对,键是“城市 (city)”,值是你当前所在的城市(字符串)。
  7. 修改字典中“喜欢的颜色”的值为你现在最喜欢的颜色。
  8. 分别打印出修改后的列表和字典。

列表和字典是 Python 中极其重要的数据结构,熟练掌握它们是进行更复杂编程的基础。下一章我们将学习如何控制程序的执行流程,让程序能够根据不同的情况做出不同的反应。