0Pricing
Lua Academy · Урок

Добавление и удаление элементов

Используйте table.insert и remove.

«Добавление и удаление элементов» — бесплатный урок Lua Academy на CoddyKit. Это урок 2 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Lua Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Lua Academy содержит 4 уроков всего.

Расширение последовательности

Размер реальных списков меняется во время работы программы. В Lua для добавления элементов в конец используется table.insert.

Поскольку последовательности используют индексацию с 1, добавленный после двух элементов элемент окажется по индексу 3.

local list = {"a", "b"}
table.insert(list, "c")
print(list[1], list[2], list[3])

Добавление в конец с помощью table.insert

При вызове с двумя аргументами table.insert(t, value) помещает value в позицию сразу после текущего последнего индекса.

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

local q = {}
table.insert(q, "first")
table.insert(q, "second")
print(q[1], q[2])

Вставка в указанную позицию

При вызове с тремя аргументами table.insert(t, pos, value) вставляет значение по индексу pos и сдвигает последующие элементы вверх.

Здесь мы помещаем "X" в позицию 2, поэтому прежний второй элемент перемещается в позицию 3.

local list = {"a", "b", "c"}
table.insert(list, 2, "X")
print(list[1], list[2], list[3], list[4])

Вставка в начало

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

Это удобно, но медленнее для больших списков, поскольку Lua приходится перемещать все элементы.

local list = {"b", "c"}
table.insert(list, 1, "a")
print(list[1], list[2], list[3])

Удаление последнего элемента

table.remove(t) с одним аргументом удаляет и возвращает последний элемент.

Последовательность уменьшается на один элемент и остаётся без пропусков.

local list = {"a", "b", "c"}
local gone = table.remove(list)
print("removed:", gone)
print(list[1], list[2], list[3])

Удаление в указанной позиции

table.remove(t, pos) удаляет элемент в позиции pos и сдвигает последующие элементы вниз, закрывая пропуск.

Помните, что индексы начинаются с 1, поэтому pos = 1 удаляет первый элемент.

local list = {"a", "b", "c"}
local gone = table.remove(list, 1)
print("removed:", gone)
print(list[1], list[2])

remove возвращает значение

Обе формы вызова table.remove возвращают извлечённое значение, поэтому его можно сразу использовать.

Благодаря этому таблица может работать как стек: добавляйте элементы с помощью insert, а извлекайте с помощью remove.

local stack = {}
table.insert(stack, 10)
table.insert(stack, 20)
local top = table.remove(stack)
print("popped:", top)

Простая очередь

Добавляйте элементы в конец, а удаляйте из начала (pos = 1), чтобы смоделировать очередь: первым пришёл — первым вышел.

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

local queue = {}
table.insert(queue, "Ann")
table.insert(queue, "Bob")
print("serving:", table.remove(queue, 1))
print("next:", queue[1])

Избегайте ручных пропусков

Присваивание элементу значения nil с помощью list[2] = nil может оставить пропуск в середине и нарушить последовательность.

Предпочитайте table.remove: эта функция сдвигает элементы и сохраняет непрерывность индексов.

local list = {"a", "b", "c"}
table.remove(list, 2)
print(list[1], list[2])

Построение из входных данных

Распространённый шаблон: начать с пустой таблицы и добавлять элементы по мере поступления данных.

Здесь мы собираем чётные числа в новую последовательность с помощью insert.

local evens = {}
for n = 1, 6 do
  if n % 2 == 0 then
    table.insert(evens, n)
  end
end
print(evens[1], evens[2], evens[3])

Совместное использование insert и remove

Операции можно свободно комбинировать. Ниже мы добавляем три имени, а затем удаляем имя из середины.

После удаления в списке остаются два элемента с последовательными индексами.

local names = {}
table.insert(names, "Al")
table.insert(names, "Bea")
table.insert(names, "Cy")
table.remove(names, 2)
print(names[1], names[2])

Проверка знаний

Подумайте, как удаление сдвигает элементы последовательности.

Итоги

Вы научились расширять списки с помощью table.insert (добавлять элементы в конец или вставлять их в позицию с индексацией от 1) и уменьшать их с помощью table.remove, которая возвращает удалённое значение и закрывает пропуски.

Избегайте ручных пропусков с nil. Далее вы научитесь удобно перебирать элементы с помощью ipairs.

Часто задаваемые вопросы

Урок «Добавление и удаление элементов» бесплатный?

Да — полный текст урока «Добавление и удаление элементов» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Lua Academy, подпишись на CoddyKit PRO. Курс Lua Academy содержит 4 уроков всего.

Чему я научусь в уроке «Добавление и удаление элементов»?

Используйте table.insert и remove. Ты практикуешь Lua Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать Lua Academy?

Предыдущий опыт не требуется. Lua Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 2 из 4.

Сколько времени занимает урок «Добавление и удаление элементов»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке Lua Academy?

Да. Каждый урок Lua Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Массивы как таблицы
  2. Добавление и удаление элементов
  3. Итерация с ipairs
  4. Длина и сортировка
← Назад к Lua Academy