JavaRush /Курсы /Модуль 1: Python Core /Динамические массивы

Динамические массивы

Модуль 1: Python Core
15 уровень , 9 лекция
Открыта

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']
2
Задача
Модуль 1: Python Core, 15 уровень, 9 лекция
Недоступна
Мой любимый список
Мой любимый список
2
Задача
Модуль 1: Python Core, 15 уровень, 9 лекция
Недоступна
Люблю список еще больше
Люблю список еще больше
Комментарии (2)
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
Slevin Уровень 64
7 августа 2025
4 Лекция 52 уровня изучения Python: >>> JavaRush:
>>> "List", господа!
Slevin Уровень 64
7 августа 2025
Задания, просто кринж: >>> Класс list использовать нельзя. >>> class DynamicArray: >>> def __init__(self): >>> self.array = []