Menu
Coddy logo textTech

Метод WithIndex

Часть раздела Основы путешествия по Kotlin на Coddy. Урок 75 из 93.

При переборе списка часто нужно знать не только элемент, но и его позицию. Метод withIndex() сразу предоставляет и то, и другое.

Вызови withIndex() у любого списка, чтобы получить пары из индекса и значения:

val colors = listOf("Red", "Green", "Blue")
for ((index, color) in colors.withIndex()) {
    println("$index: $color")
}
// Вывод:
// 0: Red
// 1: Green
// 2: Blue

Обратите внимание на синтаксис внутри скобок: (index, color). Это называется деструктуризацией: она распаковывает индекс и значение в отдельные переменные. Вы можете назвать эти переменные как угодно, если это имеет смысл для вашего кода.

Этот подход чище, чем вручную отслеживать индекс с помощью переменной-счётчика. Он особенно полезен, когда нужно отображать нумерованные списки или выполнять разные действия в зависимости от позиции:

val tasks = listOf("Wake up", "Exercise", "Eat breakfast")
for ((i, task) in tasks.withIndex()) {
    println("Step ${i + 1}: $task")
}
// Вывод:
// Step 1: Wake up
// Step 2: Exercise
// Step 3: Eat breakfast
challenge icon

Задание

Средне

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

Используя withIndex(), выведите каждого студента с его порядковым номером (начиная с 1, а не с 0).

Формат ввода:

  • Первая строка: целое число n, обозначающее количество студентов
  • Следующие n строк: имена студентов (строки)

Формат вывода:

Выведите каждого студента в отдельной строке в формате:

Rank 1: Alice
Rank 2: Bob
Rank 3: Charlie

Помните, что withIndex() выдаёт индексы, начиная с 0, поэтому вам нужно скорректировать их, чтобы порядковые номера начинались с 1.

Попробуйте сами

fun main() {
    // Считать количество студентов
    val n = readLine()!!.toInt()
    
    // Считать имена студентов в список
    val students = mutableListOf<String>()
    for (i in 1..n) {
        students.add(readLine()!!)
    }
    
    // TODO: Напишите ваш код ниже
    // Используйте withIndex() для перебора студентов и вывода их ранга
    // Помните: withIndex() даёт индексы, начинающиеся с 0, но ранги должны начинаться с 1
    
}
quiz iconПроверьте себя

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

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

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