Срезы списков с помощью SubList
Часть раздела Основы путешествия по Kotlin на Coddy. Урок 79 из 93.
Иногда нужно извлечь часть списка, а не работать со всей коллекцией. Метод subList() позволяет создать представление определённого диапазона элементов из существующего списка.
Метод subList() принимает два параметра: начальный индекс (включительно) и конечный индекс (исключительно). Это означает, что элемент с начальным индексом включается, а элемент с конечным индексом — нет:
val numbers = listOf(10, 20, 30, 40, 50)
val slice = numbers.subList(1, 4)
println(slice) // [20, 30, 40]В этом примере subList(1, 4) извлекает элементы, начиная с индекса 1 и до индекса 4 (не включая его). В результате мы получаем второй, третий и четвёртый элементы.
Полученный подсписок является представлением исходного списка, а не копией. Это важно понимать при работе с изменяемыми списками, поскольку изменения в исходном списке могут повлиять на подсписок.
Для большинства случаев использования списков, доступных только для чтения, вы можете просто использовать его для доступа к диапазону элементов:
val days = listOf("Mon", "Tue", "Wed", "Thu", "Fri")
val midWeek = days.subList(1, 4)
println(midWeek) // [Tue, Wed, Thu]Задание
СреднеВам будет предоставлен список целых чисел и два индекса, задающих диапазон. Извлеките подсписок с помощью subList() и выведите сумму извлечённых элементов.
Формат ввода:
- Первая строка: целое число
n, обозначающее количество элементов - Следующие
nстрок: целые числа, которые нужно добавить в список - Следующая строка: начальный индекс (включительно)
- Последняя строка: конечный индекс (исключительно)
Формат вывода:
Выведите сумму элементов извлечённого подсписка.
Пример:
Если список — [5, 10, 15, 20, 25], начальный индекс — 1, а конечный индекс — 4, то подсписок будет иметь вид [10, 15, 20], а вывод должен быть равен 45.
Попробуйте сами
fun main() {
val n = readLine()!!.toInt()
val list = mutableListOf<Int>()
repeat(n) {
list.add(readLine()!!.toInt())
}
val startIndex = readLine()!!.toInt()
val endIndex = readLine()!!.toInt()
// TODO: Напишите ваш код ниже
// Используйте subList() для извлечения элементов от startIndex до endIndex
// Вычислите и выведите сумму извлечённых элементов
}В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Основы
4Операторы. Часть 1
Арифметические операторыОператор остатка от деленияСоставное присваиваниеОператоры сравненияПовторение — простая математика7Базовый ввод-вывод
Функция PrintlnШаблоны строкВвод ReadLineПреобразование типовПовторение — лет до выхода на пенсиюПовторение — правда или ложь10Функции
Объявление функцииПараметры и аргументыВозвращаемые значенияИменованные аргументыЗначения по умолчаниюФункции с одним выражениемПовторение — функция SigmaПовторение — функция валидации13Итерация по последовательностям
Итерация по элементамМетод WithIndexИтерация по строкам, ч. 1Итерация по строкам, ч. 2Повторение — индексированные буквы2Переменные
Val и VarВывод типовЧислаСтрокаЛогическое значениеСоглашения об именованииПовторение — инициализация переменных5Операторы, часть 2
Логические операторы, часть 1Логические операторы, часть 2Логические операторы, часть 3Тернарный оператор с выражением ifПовторение — простая логика8Калькулятор разделения счёта
Приветственное сообщениеВвод данных14Продвинутые списки
Срезы списков с помощью SubListСрезы списков с помощью Take и DropОператоры последовательностейМетод ContainsПовторение — поиск страницы3Обработка null
Что такое безопасность nullТипы, допускающие nullОператор безопасного вызоваОператор ЭлвисаОсновы задания на функцииУтверждение ненулевого значенияПовторение — безопасный доступ6Принятие решений
Инструкция ifIf — ElseIf как выражениеВыражение whenWhen с диапазонамиПовторение — простой калькулятор9Циклы
Цикл ForЦикл WhileЦикл Do-WhileBreakContinueДиапазоны в циклахВложенный циклПовторение — факториалПовторение — динамический вводПотренируйтесь самостоятельно: Песочница Kotlin