Длина и сортировка
Подсчитывайте и сортируйте последовательности.
«Длина и сортировка» — бесплатный урок Lua Academy на CoddyKit. Это урок 4 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Lua Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Lua Academy содержит 4 уроков всего.
Оператор длины
Оператор # возвращает количество элементов в последовательности.
Для аккуратной таблицы с нумерацией от 1 и тремя элементами значение #t равно 3. Последний элемент находится по индексу #t.
local list = {"a", "b", "c"}
print(#list)
print(list[#list])Длина в цикле
Используйте #t как верхнюю границу числового цикла for, чтобы посетить каждый индекс.
Поскольку последовательности нумеруются с 1, диапазон имеет вид 1, #t.
local nums = {10, 20, 30, 40}
for i = 1, #nums do
print(i, nums[i])
endПустые таблицы
Пустая последовательность имеет длину 0.
Поэтому выражение #t == 0 — быстрый способ проверить, есть ли в списке элементы.
local empty = {}
print(#empty)
if #empty == 0 then
print("list is empty")
endДлина после изменений
Когда вы добавляете или удаляете элементы с помощью функций table, значение # обновляется соответствующим образом.
Вставка увеличивает количество элементов, а удаление уменьшает его.
local list = {"a", "b"}
table.insert(list, "c")
print(#list)
table.remove(list)
print(#list)Пропуски нарушают длину
# надёжен только для последовательностей без пропусков. Пропуск может сделать результат неопределённым.
Используйте table.insert и table.remove, чтобы результат # оставался надёжным.
local good = {1, 2, 3}
print(#good)
table.insert(good, 4)
print(#good)Сортировка на месте
table.sort(t) переупорядочивает последовательность на месте — по умолчанию от меньшего к большему.
Она изменяет исходную таблицу, а не возвращает новую.
local nums = {3, 1, 2}
table.sort(nums)
print(nums[1], nums[2], nums[3])Сортировка строк
По умолчанию строки сортируются в алфавитном порядке, при этом символы сравниваются по одному.
После сортировки индекс 1 содержит первый элемент в этом порядке.
local names = {"Cy", "Ann", "Bob"}
table.sort(names)
print(names[1], names[2], names[3])Порядок по убыванию
Передайте функцию сравнения, чтобы управлять порядком. Возвращаемое значение a > b сортирует элементы от большего к меньшему.
Функция решает, должен ли a стоять перед b.
local nums = {3, 1, 4, 2}
table.sort(nums, function(a, b)
return a > b
end)
print(nums[1], nums[2], nums[3], nums[4])Пользовательские сравнения
Функции сравнения позволяют сортировать по любому правилу, например по длине строки, а не по алфавиту.
Ниже сначала идут короткие слова.
local words = {"hello", "hi", "howdy"}
table.sort(words, function(a, b)
return #a < #b
end)
print(words[1], words[2], words[3])Длина и сортировка
Объедините инструменты: отсортируйте список, а затем прочитайте крайние элементы по их позициям.
После сортировки по возрастанию минимальный элемент находится по индексу 1, а максимальный — по индексу #t.
local data = {7, 2, 9, 4}
table.sort(data)
print("min:", data[1])
print("max:", data[#data])Сначала сортировка, затем перебор
Распространённая цепочка обработки: отсортировать последовательность, а затем пройти по ней с помощью ipairs, чтобы вывести элементы по порядку.
Сортировка переупорядочивает ту же таблицу с нумерацией от 1, поэтому перебор следует новому порядку.
local scores = {50, 10, 30}
table.sort(scores)
for i, s in ipairs(scores) do
print(i, s)
endБыстрая проверка
Вспомните, что возвращает оператор длины.
Повторение
Вы узнали, что #t подсчитывает элементы в последовательности без пропусков, последний элемент находится по адресу t[#t], а table.sort переупорядочивает элементы на месте — по возрастанию по умолчанию или с помощью пользовательской функции сравнения.
Теперь вместе с insert, remove и ipairs вы можете уверенно работать с последовательностями Lua.
Часто задаваемые вопросы
Урок «Длина и сортировка» бесплатный?
Да — полный текст урока «Длина и сортировка» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Lua Academy, подпишись на CoddyKit PRO. Курс Lua Academy содержит 4 уроков всего.
Чему я научусь в уроке «Длина и сортировка»?
Подсчитывайте и сортируйте последовательности. Ты практикуешь Lua Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Lua Academy?
Предыдущий опыт не требуется. Lua Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 4 из 4.
Сколько времени занимает урок «Длина и сортировка»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Lua Academy?
Да. Каждый урок Lua Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Массивы как таблицы
- Добавление и удаление элементов
- Итерация с ipairs
- Длина и сортировка