Slicing delle liste con Take e Drop
Fa parte della sezione Fondamenti del percorso Kotlin di Coddy. Lezione 80 di 93.
Kotlin fornisce due metodi più semplici per estrarre porzioni di una lista quando ti servono solo gli elementi dall'inizio o dalla fine: take() e drop().
Il metodo take() restituisce una nuova lista contenente i primi n elementi:
val numbers = listOf(10, 20, 30, 40, 50)
val firstThree = numbers.take(3)
println(firstThree) // [10, 20, 30]Il metodo drop() fa il contrario. Salta i primi n elementi e restituisce il resto:
val numbers = listOf(10, 20, 30, 40, 50)
val afterTwo = numbers.drop(2)
println(afterTwo) // [30, 40, 50]A differenza di subList(), questi metodi restituiscono copie indipendenti anziché viste. Sono anche più leggibili quando vuoi semplicemente ottenere «i primi» elementi o «tutti tranne i primi».
Puoi combinare entrambi i metodi per estrarre una sezione centrale:
val letters = listOf("A", "B", "C", "D", "E")
val middle = letters.drop(1).take(3)
println(middle) // [B, C, D]Se richiedi più elementi di quanti ne esistano, questi metodi restituiscono semplicemente quelli disponibili senza generare un errore:
val short = listOf(1, 2)
println(short.take(10)) // [1, 2]
println(short.drop(10)) // []Sfida
MedioRiceverai una lista di numeri interi e due numeri: quanti elementi eliminare dall'inizio e quanti elementi prendere dopo averli eliminati.
Usa insieme drop() e take() per estrarre una sezione centrale della lista, quindi stampa gli elementi estratti.
Formato dell'input:
- Prima riga: un numero intero
nche rappresenta il numero di elementi - Le successive
nrighe: numeri interi da aggiungere alla lista - Riga successiva: il numero di elementi da eliminare dall'inizio
- Ultima riga: il numero di elementi da prendere dopo averli eliminati
Formato dell'output:
Stampa la lista risultante nel formato predefinito di Kotlin.
Esempio:
Se la lista è [10, 20, 30, 40, 50, 60], il numero di elementi da eliminare è 2 e il numero di elementi da prendere è 3, l'output dovrebbe essere:
[30, 40, 50]Provalo tu
fun main() {
// Leggi il numero di elementi
val n = readLine()!!.toInt()
// Leggi gli elementi della lista
val list = mutableListOf<Int>()
for (i in 1..n) {
list.add(readLine()!!.toInt())
}
// Leggi i valori di drop e take
val dropCount = readLine()!!.toInt()
val takeCount = readLine()!!.toInt()
// TODO: Scrivi il tuo codice qui sotto
// Usa drop() e take() per estrarre la sezione centrale
// Stampa il risultato
println(result)
}Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.
Tutte le lezioni di Fondamenti
4Operatori Parte 1
Operatori aritmeticiOperatore moduloAssegnazione compostaOperatori di confrontoRipasso: matematica semplice7Input/output di base
Funzione printlnTemplate di stringheInput con readLineConversione di tipoRiepilogo - Anni alla pensioneRiepilogo - Vero o falso10Funzioni
Dichiarare una funzioneParametri e argomentiValori di ritornoArgomenti denominatiValori predefinitiFunzioni a espressione singolaRiepilogo - Funzione SigmaRiepilogo - Funzione di validazione2Variabili
Val vs VarInferenza del tipoNumeriStringaBooleanoConvenzioni di denominazioneRiepilogo - Inizializzare le variabili5Operatori Parte 2
Operatori logici Parte 1Operatori logici Parte 2Operatori logici Parte 3Ternario con espressione ifRipasso - Logica semplice8Calcolatore per dividere il conto
Messaggio di benvenutoAcquisire i dati11FizzBuzz con un tocco
Panoramica del giocoLa funzione FizzBuzz14Liste: argomenti avanzati
Slicing delle liste con SubListSlicing delle liste con Take e DropOperatori di sequenzaIl metodo containsRiepilogo - Cerca una pagina3Nullabilità
Cos'è la null safetyTipi nullableOperatore di chiamata sicuraOperatore ElvisBasi della sfida sulle funzioniAsserzione non-nullRiepilogo - Accesso sicuro6Prendere decisioni
Istruzione ifIf-elseIf come espressioneEspressione whenwhen con intervalliRiepilogo - Calcolatrice semplice9Cicli
Ciclo forCiclo whileCiclo do-whilebreakcontinueIntervalli nei cicliCiclo annidatoRipasso - fattorialeRipasso - input dinamicoEsercitati da solo: Playground Kotlin