Срезы списков с помощью Take и Drop
Часть раздела Основы путешествия по Kotlin на Coddy. Урок 80 из 93.
Kotlin предоставляет два более простых метода для извлечения частей списка, когда вам нужны только элементы из начала или конца: take() и drop().
Метод take() возвращает новый список, содержащий первые n элементов:
val numbers = listOf(10, 20, 30, 40, 50)
val firstThree = numbers.take(3)
println(firstThree) // [10, 20, 30]Метод drop() делает противоположное. Он пропускает первые n элементов и возвращает остальные:
val numbers = listOf(10, 20, 30, 40, 50)
val afterTwo = numbers.drop(2)
println(afterTwo) // [30, 40, 50]В отличие от subList(), эти методы возвращают независимые копии, а не представления. Они также более понятны, когда вам просто нужны «первые несколько» элементов или «все, кроме первых нескольких».
Вы можете объединить оба метода, чтобы извлечь среднюю часть:
val letters = listOf("A", "B", "C", "D", "E")
val middle = letters.drop(1).take(3)
println(middle) // [B, C, D]Если вы запрашиваете больше элементов, чем существует, эти методы просто возвращают доступные элементы, не вызывая ошибку:
val short = listOf(1, 2)
println(short.take(10)) // [1, 2]
println(short.drop(10)) // []Задание
СреднеВам будет предоставлен список целых чисел и два числа: сколько элементов пропустить с начала и сколько элементов взять после пропуска.
Используйте вместе drop() и take(), чтобы извлечь среднюю часть списка, а затем выведите извлечённые элементы.
Формат ввода:
- Первая строка: целое число
n, обозначающее количество элементов - Следующие
nстрок: целые числа, которые нужно добавить в список - Следующая строка: количество элементов, которые нужно пропустить с начала
- Последняя строка: количество элементов, которые нужно взять после пропуска
Формат вывода:
Выведите результирующий список в стандартном формате списка Kotlin.
Пример:
Если список — [10, 20, 30, 40, 50, 60], количество пропускаемых элементов — 2, а количество берущихся элементов — 3, результат должен быть таким:
[30, 40, 50]Попробуйте сами
fun main() {
// Считать количество элементов
val n = readLine()!!.toInt()
// Считать элементы списка
val list = mutableListOf<Int>()
for (i in 1..n) {
list.add(readLine()!!.toInt())
}
// Считать значения drop и take
val dropCount = readLine()!!.toInt()
val takeCount = readLine()!!.toInt()
// TODO: Напишите ваш код ниже
// Используйте drop() и take() для извлечения средней части
// Вывести результат
println(result)
}В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Основы
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