第二章:Python数据结构与函数

2025年2月16日

在这一章中,我们将深入探索Python的数据结构和函数编程的基本概念,这是进行任何Python编程的基础。数据结构的理解将帮助我们更有效地组织和存储数据,而函数则是实现代码复用和功能模块化的关键。接下来,我们将逐步学习列表、元组、字典、集合等数据结构,并掌握如何定义和使用函数,最后了解Lambda表达式这一强大的工具。

2.1 列表和元组

在Python中,列表和元组是两种重要的可变序列和不可变序列,它们分别用于存储一组元素。

列表

列表是一个可变的序列,可以随意添加、删除或修改其中的元素。例如:

# 创建一个列表
fruits = ['苹果', '香蕉', '橙子']
print(fruits)

# 添加元素
fruits.append('葡萄')
print(fruits)

# 修改元素
fruits[1] = '草莓'
print(fruits)

# 删除元素
fruits.remove('苹果')
print(fruits)

列表的灵活性使得我们能够处理多种数据存储需求,特别是在需要对数据进行频繁修改时。

元组

元组与列表类似,但它是不可变的。一旦创建,元组中的元素就无法更改。元组适合用于存储那些应该保持不变的数据。例如:

# 创建一个元组
point = (10, 20)
print(point)

# 尝试修改元组中的元素(会出错)
# point[0] = 5  # TypeError: 'tuple' object does not support item assignment

在函数返回多个值时,元组非常有用,因为它能以不可变的方式将数据打包在一起。

2.2 字典和集合

字典和集合是Python中两个非常有用的数据结构,尤其在处理键值对和唯一性数据时。

字典

字典是一个无序的键值对集合,其中每个键都是唯一的。字典适用于需要快速查找或关联的数据。例如:

# 创建字典
student = {
    'name': '小明',
    'age': 20,
    'major': '计算机科学'
}

# 访问字典中的值
print(student['name'])

# 修改字典中的值
student['age'] = 21

# 添加新项
student['grade'] = 'A'
print(student)

字典可以用于各种场景,如存储配置数据、统计频率等。

集合

集合是一个无序的元素集合,且每个元素都是唯一的。集合主要用于去重和集合运算。例如:

# 创建集合
unique_numbers = {1, 2, 3, 2, 1}
print(unique_numbers)  # 输出: {1, 2, 3}

# 添加元素
unique_numbers.add(4)
print(unique_numbers)

# 集合运算
set_a = {1, 2, 3}
set_b = {3, 4, 5}
intersection = set_a & set_b  # 交集
print(intersection)  # 输出: {3}

集合的主要优势在于它的去重功能以及对集合操作(如交集、并集)的良好支持。

2.3 函数定义与使用

在编程中,函数是一个非常重要的概念,用于实现代码的模块化和复用。在Python中,定义函数使用def关键字。

定义函数

def greet(name):
    return f'你好, {name}!'

使用函数

print(greet('小红'))  # 输出: 你好, 小红!

函数参数

函数可以接收多个参数,并可以为参数指定默认值。例如:

def add(a, b=5):
    return a + b

print(add(3))  # 输出: 8
print(add(3, 2))  # 输出: 5

作用域

函数的作用域决定了变量的可用性。局部变量只能在函数内部使用,而全局变量则在整个脚本中可用。例如:

x = 10  # 全局变量

def my_function():
    y = 5  # 局部变量
    print(x + y)

my_function()  # 输出: 15
# print(y)  # NameError: name 'y' is not defined

通过掌握函数的定义与使用,您可以编写更为清晰和可维护的代码。

2.4 Lambda表达式

Lambda表达式提供了一种简化定义小型匿名函数的方式。在一些需要简单函数作为参数的场景中,Lambda表达式非常有用。

定义Lambda表达式

# 定义一个加法的Lambda函数
add = lambda x, y: x + y
print(add(2, 3))  # 输出: 5

使用Lambda表达式

Lambda表达式常与高阶函数一起使用,例如map(), filter(), sorted()等。以下是使用map()示例:

numbers = [1, 2, 3, 4]
squared = list(map(lambda x: x ** 2, numbers))
print(squared)  # 输出: [1, 4, 9, 16]

Lambda表达式让函数式编程变得更加简洁,使得代码在表达意图时更为清晰。

通过理解和实践这些数据结构和函数概念,您将为更复杂的编程任务打下坚实的基础。在下一章中,我们将进入面向对象编程的世界,了解类和对象的基本概念。期待与您再见!