10.1 Особливості динамічних масивів
Динамічні масиви — це структури даних, які можуть змінювати свій розмір під час виконання програми. Вони дозволяють ефективно керувати колекцією елементів, додавати та видаляти елементи без необхідності заздалегідь визначати розмір масиву.
У Python динамічним масивом є список (вбудований клас list), який дозволяє додавати, видаляти та змінювати елементи в довільній позиції.
Особливості динамічних масивів:
- Змінюваний розмір: Динамічні масиви можуть збільшуватись і зменшуватись за потребою.
- Швидкий доступ за індексом: Доступ до елементів здійснюється за постійний час
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']
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ