CodeGym /课程 /Python SELF ZH /动态数组

动态数组

Python SELF ZH
第 52 级 , 课程 3
可用

10.1 动态数组的特性

动态数组是一种在程序运行时可以改变大小的数据结构。它们允许有效地管理元素集合,添加和删除元素而无需提前确定数组大小。

在Python中,动态数组是一个列表(内置类list),可以在任意位置添加、删除和修改元素。

Python动态数组特性

动态数组的特性:

  • 可变大小:动态数组可以根据需要增大和缩小。
  • 快速索引访问:访问元素的时间是常数 O(1)
  • 自动内存管理:Python自动管理列表的内存分配和释放。
  • 便捷的元素操作方法:内置方法可以轻松添加、删除和修改元素。

Python中动态数组的创建和使用示例:


# 创建列表
dynamic_array = [1, 2, 3, 4, 5]

# 添加元素
dynamic_array.append(6)
print(dynamic_array)  # 输出: [1, 2, 3, 4, 5, 6]

# 删除元素
dynamic_array.remove(3)
print(dynamic_array)  # 输出: [1, 2, 4, 5, 6]

# 索引访问
print(dynamic_array[2])  # 输出: 4

# 修改元素
dynamic_array[2] = 10
print(dynamic_array)  # 输出: [1, 2, 10, 5, 6]

10.2 动态数组的优缺点

动态数组有其优缺点。让我们仔细看看。

优点:

  • 灵活性:动态数组可以根据程序需求改变大小,能够有效地管理内存和处理可变数据量。
  • 快速索引访问:与静态数组一样,动态数组可以在常数时间 O(1) 内快速访问元素。
  • 使用方便:Python的内置方法(例如 append, remove, insert)可以简化元素的操作,使代码更易读和维护。
  • 自动内存管理:Python为动态数组自动管理内存,从而解放编程人员手动分配和释放内存的需求。

缺点:

  • 内存重分配:当动态数组大小增加时,可能需要重新分配内存,并将元素复制到新的内存区域。这可能暂时减慢程序的执行。
  • 插入和删除元素的开销:在数组中间插入和删除元素需要移动元素,耗时 O(n)
  • 略高的管理开销:相较于像C这样的低级语言,Python的动态数组由于自动内存管理和异常处理,会有额外的管理开销。

10.3 示例与应用

让我们看看Python中动态数组的一些使用示例。

1. 动态任务列表的实现:


tasks = []

# 添加任务
tasks.append("Task 1")
tasks.append("Task 2")
tasks.append("Task 3")

# 完成任务并将其从列表中删除
completed_task = tasks.pop(0)
print(f"Completed: {completed_task}")
print(f"Remaining tasks: {tasks}")  # 输出: Remaining tasks: ['Task 2', 'Task 3']

2. 动态对象列表的实现:


students = []

# 添加学生
students.append("Alice")
students.append("Bob")
students.append("Charlie")

# 删除学生
students.remove("Bob")
print(f"Students after removal: {students}")  # 输出: Students after removal: ['Alice', 'Charlie']

# 在指定位置添加学生
students.insert(1, "David")
print(f"Students after insertion: {students}")  # 输出: Students after insertion: ['Alice', 'David', 'Charlie']
评论
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION