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 днів
Коментарі
ЩОБ ПОДИВИТИСЯ ВСІ КОМЕНТАРІ АБО ЗАЛИШИТИ КОМЕНТАР,
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ