Menu
Coddy logo textTech

Método WithIndex

Parte de la sección Fundamentos del Journey de Kotlin de Coddy. Lección 75 de 93.

Al iterar sobre una lista, a menudo necesitas conocer no solo el elemento, sino también su posición. El método withIndex() te proporciona ambos a la vez.

Llama a withIndex() en cualquier lista para obtener pares de índice y valor:

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

Observa la sintaxis dentro de los paréntesis: (index, color). Esto se llama desestructuración, que desempaqueta el índice y el valor en variables separadas. Puedes nombrar estas variables como tenga sentido para tu código.

Este enfoque es más limpio que realizar un seguimiento manual de un índice con una variable contador. Es especialmente útil cuando necesitas mostrar listas numeradas o realizar diferentes acciones según la posición:

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

Desafío

Intermedio

Recibirás una lista de nombres de estudiantes como entrada. Lee primero el número de estudiantes y después lee cada nombre.

Usando withIndex(), imprime cada estudiante con su número de puesto (empezando desde 1, no desde 0).

Formato de entrada:

  • Primera línea: un entero n que representa el número de estudiantes
  • Siguientes n líneas: nombres de estudiantes (cadenas)

Formato de salida:

Imprime cada estudiante en una línea separada con el formato:

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

Recuerda que withIndex() te proporciona índices que empiezan desde 0, por lo que tendrás que ajustarlos para que los números de puesto empiecen desde 1.

Pruébalo tú mismo

fun main() {
    // Lee el número de estudiantes
    val n = readLine()!!.toInt()
    
    // Lee los nombres de los estudiantes en una lista
    val students = mutableListOf<String>()
    for (i in 1..n) {
        students.add(readLine()!!)
    }
    
    // TODO: Escribe tu código debajo
    // Usa withIndex() para iterar a través de los estudiantes e imprimir su rango
    // Recuerda: withIndex() da índices empezando desde 0, pero los rangos deben empezar desde 1
    
}
quiz iconPonte a prueba

Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.

Todas las lecciones de Fundamentos

Practica por tu cuenta: Playground de Kotlin