Массивы

Модуль 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 Уровень 64
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)

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