Массивы

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

4.1 Определение массива и его свойства

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

Здесь показан простой массив размером 4, содержащий элементы (1, 2, 3 и 4).

Определение массива и его свойства

Свойства массива:

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

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

Давайте рассмотрим примеры использования массивов, которые вы уже можете знать:

Хранение данных фиксированной длины

Дни недели, месяцы года:


# Создание массива с днями недели
days_of_week = ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"]
print(days_of_week[2])  # Вывод: Wednesday

Матрицы и многомерные массивы

Матрица 3x3:


# Создание матрицы 3x3
matrix = [
    [1, 2, 3],
    [4, 5, 6],
    [7, 8, 9]
]
print(matrix[1][1])  # Вывод: 5

Использование в алгоритмах сортировки

Сортировка массива чисел:


# Сортировка массива чисел
numbers = [5, 2, 9, 1, 5, 6]
numbers.sort()  # Сортировка массива
print(numbers)  # Вывод: [1, 2, 5, 5, 6, 9]

Буфер для хранения временных данных

Буфер для чтения данных из файла:


# Создание буфера размером 1024 байта
buffer = [0] * 1024
print(len(buffer))  # Вывод: 1024

4.3 Основные операции с массивами

Важно! Класс list в Python является динамическим массивом, он может менять свой размер в процессе работы. Более подробно о динамических массивах вы узнаете через несколько лекций.

Основные операции: доступ по индексу, вставка, удаление

Доступ по индексу

Доступ к элементу массива осуществляется с помощью индекса, который указывает на его позицию.


# Доступ к элементам массива по индексу
arr = [10, 20, 30, 40, 50]
print(arr[2])  # Вывод: 30
print(arr[-1])  # Вывод: 50 (последний элемент)

Вставка

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

Пример (вставка элемента в середину массива):


# Вставка элемента в массив
arr = [10, 20, 30, 40, 50]
# Вставка 25 на позицию 3
arr.insert(2, 25)  # Позиция 3 соответствует индексу 2
print(arr)  # Вывод: [10, 20, 25, 30, 40, 50]

Удаление

Удаление элемента из массива может требовать сдвига всех последующих элементов, чтобы заполнить освободившееся место.

Пример (удаление элемента):


# Удаление элемента из массива
arr = [10, 20, 30, 40, 50]
# Удаление элемента на позиции 3
arr.pop(2)  # Позиция 3 соответствует индексу 2
print(arr)  # Вывод: [10, 20, 40, 50]

4.4 Преимущества и недостатки использования массивов

Рассмотрим преимущества и недостатки использования массивов:

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

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

Недостатки:

  • Фиксированный размер: Размер массива задаётся при его создании и не может быть изменён. Это означает, что нужно заранее знать необходимый размер массива или использовать динамические массивы, которые могут увеличиваться по мере необходимости.
  • Затраты на вставку и удаление: Вставка и удаление элементов могут быть затратными по времени, так как требуют сдвига элементов. В худшем случае вставка или удаление элемента в середине массива занимает O(n) времени.
  • Неэффективное использование памяти: Если массив используется не полностью, то оставшиеся ячейки памяти остаются незаполненными, что может привести к неэффективному использованию памяти.
2
Задача
Модуль 1: Python Core, 15 уровень, 3 лекция
Недоступна
Настоящий массив.
Настоящий массив.
2
Задача
Модуль 1: Python Core, 15 уровень, 3 лекция
Недоступна
Двумерный массив.
Двумерный массив.
Комментарии (8)
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
Slevin Уровень 59
3 августа 2025
>>>Используйте метод сортировки, который работает непосредственно с объектами array, >>>например метод sort() из модуля array Валидатор и автор этого задания поел говна. В модуле array нет и некогда не было метода sort()! Внимание, пример "метода sort() из модуля array" от автора задания: >>> arr = array.array('i', sorted(arr)) У вас там все в порядке? =================================================== Создание матрицы через array - это такой костыль, что только инвалид на обе ноги и голову решится делать матрицу через array, когда существует Numpy. Даже питоновский базовый "список списков" - в сотню раз удобнее. А если все же нам нужна эффективность по скорости - то numpy:

import numpy as np

# Создание матрицы 10x10, заполненной нулями
matrix = np.zeros((10, 10), dtype=int)

# Заполнение таблицей умножения
for i in range(10):
    for j in range(10):
        matrix[i, j] = (i + 1) * (j + 1)

# Вывод
print(matrix)

Дмитрий Уровень 93
13 февраля 2025
Хорошие задачи!
Ivan Уровень 72
15 мая 2025
Задачи специально, чтобы посмотреть на класс array и больше никогда в жизни им не пользоваться.
Vlad Tagunkov Уровень 25
26 января 2025
😂 что это за ошибка? 😂 почему нельзя решать задачки целый день? 😂
Andrey Bobrovski Уровень 1
19 февраля 2025
у меня кровь из глаз потекла от такого решения, оно точно лучшее? цикл там использовать, random.randint...
Артём Васенин Уровень 1
22 декабря 2024
Ребят вот честно, писать методички это не ваше. Скопируйте хотя бы грамотный материал чтоль и задачи к нему...
Андрей Уровень 61
6 октября 2024
Коллеги....как так готовое решение использует list
Екатерина Уровень 93
30 сентября 2024
Смущает, что примеры были даны через list и ранее мы именно list и изучали. А в задачах просят сделать через модуль array. То есть это типо на самостоятельное изучение?