JavaRush /Курсы /Модуль 1: Python Core /Массивы постоянного размера

Массивы постоянного размера

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

9.1 Особенности массивов постоянного размера

Массивы постоянного размера — это массивы, размер которых определяется при их создании и не может изменяться в процессе выполнения программы. В Python массивы постоянного размера можно создать с помощью библиотеки array или использовать списки, хотя списки в Python могут изменять размер, они используются аналогично массивам в других языках.

Особенности массивов постоянного размера:

  • Фиксированный размер: Размер массива задаётся при его создании и не может быть изменён.
  • Однородность: Все элементы массива должны быть одного типа.
  • Быстрый доступ по индексу: Доступ к элементам массива осуществляется за постоянное время O(1).
  • Неизменяемость размера: Количество элементов массива остаётся постоянным, и добавление новых элементов невозможно.

Пример создания массива постоянного размера в Python:

С использованием библиотеки array:


import array

# Создание массива из целых чисел (тип 'i' для int)
arr = array.array('i', [1, 2, 3, 4, 5])

# Доступ к элементам
print(arr[2])  # Вывод: 3

# Изменение значения элемента
arr[2] = 10
print(arr)  # Вывод: array('i', [1, 2, 10, 4, 5])

С использованием списка (имитируя массив постоянного размера):


# Создание списка фиксированного размера
arr = [0] * 5

# Инициализация элементов
arr[0] = 1
arr[1] = 2
arr[2] = 3
arr[3] = 4
arr[4] = 5

# Доступ к элементам
print(arr[2])  # Вывод: 3

# Изменение значения элемента
arr[2] = 10
print(arr)  # Вывод: [1, 2, 10, 4, 5]

9.2 Преимущества и недостатки массивов постоянного размера

У всего есть свои сильные и слабые стороны, у фиксированных массивов они такие.

Преимущества:

  • Быстрый доступ по индексу: Доступ к любому элементу массива осуществляется за постоянное время O(1), что делает массивы очень эффективными для чтения данных.
  • Простота реализации: Массивы просты в понимании и использовании, их легко реализовать и применять в различных задачах.
  • Эффективное использование памяти: Поскольку размер массива фиксирован, память выделяется сразу при создании массива, что позволяет избежать затрат на перераспределение памяти.
  • Предсказуемость: Фиксированный размер массива упрощает управление памятью и предсказуемость использования ресурсов.

Недостатки:

  • Неизменяемость размера: Размер массива задаётся при его создании и не может быть изменён. Это означает, что нужно заранее знать необходимый размер массива или рисковать избыточным выделением памяти.
  • Затраты на вставку и удаление: Вставка и удаление элементов могут быть затратными по времени, так как требуют сдвига элементов. В худшем случае вставка или удаление элемента в середине массива занимает O(n) времени.
  • Неэффективное использование памяти: Если массив используется не полностью, то оставшиеся ячейки памяти остаются незаполненными, что может привести к неэффективному использованию памяти.
  • Ограниченная гибкость: Массивы не позволяют динамически изменять размер, что делает их менее гибкими по сравнению с динамическими структурами данных, такими как списки.

9.3 Примеры использования и применения

Вот несколько примеров использования и применения массивов постоянного размера.

Пример 1: Таблицы и матрицы

Массивы постоянного размера часто используются для представления таблиц и матриц, где размер известен заранее.


import numpy as np

# Создание 3x3 матрицы с фиксированным размером
matrix = np.array([
    [1, 2, 3],
    [4, 5, 6],
    [7, 8, 9]
])

# Доступ к элементам матрицы
print(matrix[1][2])  # Вывод: 6

# Изменение элемента матрицы
matrix[1][2] = 10
print(matrix)
# Вывод:
# [[ 1  2  3]
#  [ 4  5 10]
#  [ 7  8  9]]

Пример 2: Буферы и кэши

Массивы постоянного размера используются для создания буферов и кэшей, где размер буфера известен заранее и не изменяется.


# Буфер фиксированного размера для чтения данных
buffer_size = 1024
buffer = bytearray(buffer_size)

# Заполнение буфера данными
data = b"Hello, World!"
buffer[:len(data)] = data

print(buffer[:len(data)])  # Вывод: b'Hello, World!'

Пример 3: Хранение данных о времени и датах

Массивы постоянного размера могут использоваться для хранения данных о времени и датах, таких как количество дней в каждом месяце.

В данном примере мы эмулируем поведение фиксированного массива через класс list:


# Количество дней в каждом месяце (не високосный год)
days_in_month = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]

# Доступ к данным
month = 2  # Февраль
print(f"В феврале {days_in_month[month - 1]} дней")  # Вывод: В феврале 28 дней
2
Задача
Модуль 1: Python Core, 15 уровень, 8 лекция
Недоступна
Создаем свой массив
Создаем свой массив
2
Задача
Модуль 1: Python Core, 15 уровень, 8 лекция
Недоступна
Создаем двумерный массив.
Создаем двумерный массив.
Комментарии (2)
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
Дмитрий/MrJonson Уровень 65
17 апреля 2025
Для недалеких Покажите где в условии написано что я должен использовать этот метод мне нравится arr = np.eye(10) это почему ошибка ?
Slevin Уровень 64
7 августа 2025