Menu
Coddy logo textTech

Découpage de liste avec Take Drop

Fait partie de la section Fondamentaux du Journey Kotlin de Coddy. Leçon 80 sur 93.

Kotlin fournit deux méthodes plus simples pour extraire des portions d’une liste lorsque vous n’avez besoin que des éléments du début ou de la fin : take() et drop().

La méthode take() renvoie une nouvelle liste contenant les n premiers éléments :

val numbers = listOf(10, 20, 30, 40, 50)
val firstThree = numbers.take(3)
println(firstThree)  // [10, 20, 30]

La méthode drop() fait le contraire. Elle ignore les n premiers éléments et renvoie le reste :

val numbers = listOf(10, 20, 30, 40, 50)
val afterTwo = numbers.drop(2)
println(afterTwo)  // [30, 40, 50]

Contrairement à subList(), ces méthodes renvoient des copies indépendantes plutôt que des vues. Elles sont également plus lisibles lorsque vous voulez simplement « les premiers éléments » ou « tous les éléments sauf les premiers ».

Vous pouvez combiner les deux méthodes pour extraire une section centrale :

val letters = listOf("A", "B", "C", "D", "E")
val middle = letters.drop(1).take(3)
println(middle)  // [B, C, D]

Si vous demandez plus d’éléments qu’il n’en existe, ces méthodes renvoient simplement ce qui est disponible sans générer d’erreur :

val short = listOf(1, 2)
println(short.take(10))  // [1, 2]
println(short.drop(10))  // []
challenge icon

Défi

Moyen

Vous recevrez une liste d’entiers et deux nombres : le nombre d’éléments à supprimer au début et le nombre d’éléments à prendre après la suppression.

Utilisez drop() et take() ensemble pour extraire une section centrale de la liste, puis affichez les éléments extraits.

Format d’entrée :

  • Première ligne : un entier n représentant le nombre d’éléments
  • Les n lignes suivantes : les entiers à ajouter à la liste
  • Ligne suivante : le nombre d’éléments à supprimer au début
  • Dernière ligne : le nombre d’éléments à prendre après la suppression

Format de sortie :

Affichez la liste résultante au format de liste par défaut de Kotlin.

Exemple :

Si la liste est [10, 20, 30, 40, 50, 60], que la valeur de drop est 2 et que la valeur de take est 3, la sortie doit être :

[30, 40, 50]

Essayez vous-même

fun main() {
    // Lire le nombre d'éléments
    val n = readLine()!!.toInt()
    
    // Lire les éléments de la liste
    val list = mutableListOf<Int>()
    for (i in 1..n) {
        list.add(readLine()!!.toInt())
    }
    
    // Lire les valeurs de drop et take
    val dropCount = readLine()!!.toInt()
    val takeCount = readLine()!!.toInt()
    
    // TODO: Écrivez votre code ci-dessous
    // Utilisez drop() et take() pour extraire la section du milieu
    
    
    // Afficher le résultat
    println(result)
}
quiz iconTestez-vous

Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.

Toutes les leçons de Fondamentaux

Entraînez-vous par vous-même : Playground Kotlin