Menu
Coddy logo textTech

Slicing delle liste con SubList

Fa parte della sezione Fondamenti del percorso Kotlin di Coddy. Lezione 79 di 93.

A volte devi estrarre una parte di una lista anziché lavorare con l’intera raccolta. Il metodo subList() ti permette di creare una vista di un intervallo specifico di elementi da una lista esistente.

Il metodo subList() accetta due parametri: l’indice iniziale (incluso) e l’indice finale (escluso). Ciò significa che l’elemento all’indice iniziale è incluso, mentre quello all’indice finale non lo è:

val numbers = listOf(10, 20, 30, 40, 50)
val slice = numbers.subList(1, 4)
println(slice)  // [20, 30, 40]

In questo esempio, subList(1, 4) estrae gli elementi dall'indice 1 fino all'indice 4 (escluso). Questo ci dà il secondo, il terzo e il quarto elemento.

La sottolista risultante è una vista della lista originale, non una copia. È importante capirlo quando si lavora con liste mutabili, poiché le modifiche alla lista originale possono influire sulla sottolista.

Per la maggior parte dei casi d'uso con liste di sola lettura, puoi semplicemente usarlo per accedere a un intervallo di elementi:

val days = listOf("Mon", "Tue", "Wed", "Thu", "Fri")
val midWeek = days.subList(1, 4)
println(midWeek)  // [Tue, Wed, Thu]
challenge icon

Sfida

Medio

Riceverai un elenco di numeri interi e due indici che rappresentano un intervallo. Estrai una sottolista usando subList() e stampa la somma degli elementi estratti.

Formato dell'input:

  • Prima riga: un numero intero n che rappresenta il numero di elementi
  • Le successive n righe: numeri interi da aggiungere all'elenco
  • Riga successiva: l'indice iniziale (incluso)
  • Ultima riga: l'indice finale (escluso)

Formato dell'output:

Stampa la somma degli elementi della sottolista estratta.

Esempio:

Se l'elenco è [5, 10, 15, 20, 25] con indice iniziale 1 e indice finale 4, la sottolista sarebbe [10, 15, 20] e l'output dovrebbe essere 45.

Provalo tu

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: Scrivi il tuo codice qui sotto
    // Usa subList() per estrarre gli elementi da startIndex a endIndex
    // Calcola e stampa la somma degli elementi estratti
    
}
quiz iconMettiti alla prova

Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.

Tutte le lezioni di Fondamenti

Esercitati da solo: Playground Kotlin