Segmentación de listas con Take Drop
Parte de la sección Fundamentos del Journey de Kotlin de Coddy. Lección 80 de 93.
Kotlin proporciona dos métodos más sencillos para extraer partes de una lista cuando solo necesitas elementos del principio o del final: take() y drop().
El método take() devuelve una lista nueva que contiene los primeros n elementos:
val numbers = listOf(10, 20, 30, 40, 50)
val firstThree = numbers.take(3)
println(firstThree) // [10, 20, 30]El método drop() hace lo contrario. Omite los primeros n elementos y devuelve el resto:
val numbers = listOf(10, 20, 30, 40, 50)
val afterTwo = numbers.drop(2)
println(afterTwo) // [30, 40, 50]A diferencia de subList(), estos métodos devuelven copias independientes en lugar de vistas. También son más legibles cuando simplemente quieres «los primeros» elementos o «todo excepto los primeros».
Puedes combinar ambos métodos para extraer una sección intermedia:
val letters = listOf("A", "B", "C", "D", "E")
val middle = letters.drop(1).take(3)
println(middle) // [B, C, D]Si solicitas más elementos de los que existen, estos métodos simplemente devuelven lo que está disponible sin producir un error:
val short = listOf(1, 2)
println(short.take(10)) // [1, 2]
println(short.drop(10)) // []Desafío
IntermedioRecibirás una lista de enteros y dos números: cuántos elementos descartar desde el principio y cuántos elementos tomar después de descartar.
Usa drop() y take() juntos para extraer una sección intermedia de la lista y después imprime los elementos extraídos.
Formato de entrada:
- Primera línea: un entero
nque representa el número de elementos - Siguientes
nlíneas: enteros que se añadirán a la lista - Siguiente línea: el número de elementos que se descartarán desde el principio
- Última línea: el número de elementos que se tomarán después de descartar
Formato de salida:
Imprime la lista resultante en el formato de lista predeterminado de Kotlin.
Ejemplo:
Si la lista es [10, 20, 30, 40, 50, 60], drop es 2 y take es 3, la salida debería ser:
[30, 40, 50]Pruébalo tú mismo
fun main() {
// Lee el número de elementos
val n = readLine()!!.toInt()
// Lee los elementos de la lista
val list = mutableListOf<Int>()
for (i in 1..n) {
list.add(readLine()!!.toInt())
}
// Lee los valores de drop y take
val dropCount = readLine()!!.toInt()
val takeCount = readLine()!!.toInt()
// TODO: Escribe tu código debajo
// Usa drop() y take() para extraer la sección intermedia
// Imprime el resultado
println(result)
}Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Todas las lecciones de Fundamentos
4Operadores, parte 1
Operadores aritméticosOperador móduloAsignación aumentadaOperadores de comparaciónRepaso: matemáticas simples7Entrada y salida básicas
Función PrintlnPlantillas de cadenasEntrada con ReadLineConversión de tiposRepaso - Años hasta la jubilaciónRepaso - Verdadero o falso10Funciones
Declarar una funciónParámetros y argumentosValores de retornoArgumentos con nombreValores predeterminadosFunciones de una sola expresiónRepaso - Función SigmaRepaso - Función de validación2Variables
Val frente a VarInferencia de tiposNúmerosCadenaBooleanoConvenciones de nomenclaturaRepaso: inicializar variables5Operadores Parte 2
Operadores lógicos Parte 1Operadores lógicos Parte 2Operadores lógicos Parte 3Ternario con expresión ifRepaso: lógica simple8Calculadora para dividir la cuenta
Mensaje de bienvenidaObtención de datos11FizzBuzz con un giro
Descripción general del juegoLa función FizzBuzz14Listas avanzadas
Segmentación de listas con SubListSegmentación de listas con Take DropOperadores de secuenciasEl método ContainsRepaso - Buscar una página3Nullabilidad
Qué es la seguridad frente a valores nulosTipos anulablesOperador de llamada seguraOperador ElvisConceptos básicos de retos de funcionesAfirmación de no nulidadRepaso: acceso seguro6Toma de decisiones
Sentencia ifIf - ElseIf como expresiónExpresión whenWhen con rangosRepaso - Calculadora simple9Bucles
Bucle ForBucle WhileBucle Do-WhileBreakContinueRangos en buclesBucle anidadoRepaso - FactorialRepaso - Entrada dinámicaPractica por tu cuenta: Playground de Kotlin