Python 基础详解:数据结构(Data Structures)—— 组织和管理数据的利器

一、引言:为什么数据结构如此重要?

在编程中,数据结构是指相互之间存在一种或多种特定关系的数据元素的集合。选择合适的数据结构可以:

  • 提高程序效率:更快地存取数据
  • 简化代码逻辑:更清晰地表达算法
  • 增强代码可维护性:易于修改和扩展

Python 提供了丰富的内置数据结构,同时支持自定义复杂的数据结构。


二、核心数据结构概览

类别

数据结构

特点

序列类型

列表(List),元组(Tuple),字符串(String),范围(Range)

有序的元素集合

映射类型

字典(Dictionary)

键值对存储

集合类型

集合(Set),冻结集合(Frozen Set)

无序唯一元素

💡 本文将重点讲解最常用的数据结构及其操作。

三、列表(List)

1. 定义与基本特性

列表是有序、可变的元素集合,可以存储不同类型的数据。

fruits = ["苹果", "香蕉", "橙子"]
numbers = [1, 2, 3]
mixed = ["Alice", 25, True]

2. 常用操作

2.1 索引与切片
print(fruits[0])    # "苹果"
print(fruits[-1])   # "橙子" (从末尾开始计数)
print(fruits[1:3])  # ["香蕉", "橙子"] (切片 [start:end))
2.2 修改元素
fruits[1] = "葡萄"
print(fruits)  # ["苹果", "葡萄", "橙子"]
2.3 添加与删除元素
# 添加
fruits.append("草莓")      # 在末尾添加
fruits.insert(1, "芒果")   # 在索引1处插入

# 删除
fruits.remove("苹果")      # 移除第一个匹配项
del fruits[0]             # 根据索引删除
popped = fruits.pop()     # 弹出并返回最后一个元素
2.4 排序与反转
numbers.sort()        # 升序排序
numbers.reverse()     # 反转顺序
sorted_numbers = sorted(numbers, reverse=True)  # 返回降序排序的新列表
2.5 列表推导式

一种简洁创建列表的方式。

squares = [x**2 for x in range(1, 6)]  # [1, 4, 9, 16, 25]

四、元组(Tuple)

1. 定义与基本特性

元组与列表类似,但不可变,适合用于不希望被修改的数据。

point = (10, 20)
person = ("Alice", 25, "北京")

2. 常用操作

2.1 访问元素
print(point[0])  # 10
print(person[1]) # 25
2.2 解包
name, age, city = person
print(name, age, city)  # Alice 25 北京

✅ 元组解包是一种优雅获取多个返回值的方式。


五、字典(Dictionary)

1. 定义与基本特性

字典是键值对的集合,键必须是唯一的且不可变(如字符串、数字、元组),值则可以是任意类型。

student = {
    "name": "Bob",
    "age": 20,
    "courses": ["数学", "英语"]
}

2. 常用操作

2.1 访问与修改
print(student["name"])  # Bob
student["age"] = 21     # 修改
student["city"] = "上海"  # 新增
2.2 检查键是否存在
if "name" in student:
    print("包含 'name' 键")

# 或者使用 get 方法安全访问
print(student.get("phone", "未知"))  # 如果没有 'phone' 键,则返回默认值 "未知"
2.3 删除键值对
del student["courses"]  # 删除指定键
popped_value = student.pop("age")  # 弹出并返回值
2.4 获取所有键、值、键值对
print(student.keys())    # dict_keys(['name', 'age'])
print(student.values())  # dict_values(['Bob', 20])
print(student.items())   # dict_items([('name', 'Bob'), ('age', 20)])

六、集合(Set)

1. 定义与基本特性

集合是无序、唯一元素的集合,常用于去重和成员测试。

unique_numbers = {1, 2, 3, 3, 4}  # {1, 2, 3, 4}

2. 常用操作

2.1 成员测试
print(2 in unique_numbers)  # True
2.2 并集、交集、差集
set1 = {1, 2, 3}
set2 = {3, 4, 5}

union_set = set1 | set2  # {1, 2, 3, 4, 5}
intersection_set = set1 & set2  # {3}
difference_set = set1 - set2  # {1, 2}
symmetric_difference_set = set1 ^ set2  # {1, 2, 4, 5}

七、总结:数据结构的核心要点

数据结构

特性

使用场景

列表

有序、可变

动态数组,适用于需要频繁修改的场景

元组

有序、不可变

不需要修改的数据,适用于固定集合

字典

键值对

快速查找、映射关系

集合

无序、唯一

去重、成员测试

学习建议:

  1. 多实践:通过实际编写代码加深理解。
  2. 结合应用场景:思考每种数据结构最适合解决的问题类型。
  3. 深入学习高级应用:如列表推导式、字典推导式等高效编程技巧。

📌 动手练习

  1. 创建一个字典,存储学生的姓名、年龄、课程,然后打印出所有课程名称。
  2. 编写一个函数,接收一个列表作为参数,返回一个新的仅包含偶数的列表。
  3. 使用集合去除重复的用户名单。
# 示例练习:筛选偶数
def filter_even(numbers):
    return [num for num in numbers if num % 2 == 0]

numbers = [1, 2, 3, 4, 5, 6]
even_numbers = filter_even(numbers)
print(even_numbers)  # 输出:[2, 4, 6]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值