Menu
Coddy logo textTech

Срезы списков с помощью 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]
challenge icon

Задание

Средне

Вам будет предоставлен список целых чисел и два индекса, задающих диапазон. Извлеките подсписок с помощью 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
    // Вычислите и выведите сумму извлечённых элементов
    
}
quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела Основы

Потренируйтесь самостоятельно: Песочница Kotlin