Menu
Coddy logo textTech

Fatiamento de Listas com Take Drop

Parte da seção Fundamentos do Journey de Kotlin da Coddy. Lição 80 de 93.

Kotlin fornece dois métodos mais simples para extrair partes de uma lista quando você precisa apenas de elementos do início ou do fim: take() e drop().

O método take() retorna uma nova lista contendo os primeiros n elementos:

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

O método drop() faz o oposto. Ele ignora os primeiros n elementos e retorna o restante:

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

Ao contrário de subList(), esses métodos retornam cópias independentes em vez de visualizações. Eles também são mais legíveis quando você simplesmente quer “os primeiros” ou “tudo exceto os primeiros” elementos.

Você pode combinar os dois métodos para extrair uma seção intermediária:

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

Se você solicitar mais elementos do que existem, esses métodos simplesmente retornam o que está disponível sem lançar um erro:

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

Desafio

Médio

Você receberá uma lista de inteiros e dois números: quantos elementos remover do início e quantos elementos pegar após a remoção.

Use drop() e take() juntos para extrair uma seção intermediária da lista e, em seguida, imprima os elementos extraídos.

Formato de entrada:

  • Primeira linha: um inteiro n representando o número de elementos
  • Próximas n linhas: inteiros a serem adicionados à lista
  • Próxima linha: o número de elementos a remover do início
  • Última linha: o número de elementos a pegar após a remoção

Formato de saída:

Imprima a lista resultante no formato padrão de lista do Kotlin.

Exemplo:

Se a lista for [10, 20, 30, 40, 50, 60], drop for 2 e take for 3, a saída deverá ser:

[30, 40, 50]

Experimente você mesmo

fun main() {
    // Lê o número de elementos
    val n = readLine()!!.toInt()
    
    // Lê os elementos da lista
    val list = mutableListOf<Int>()
    for (i in 1..n) {
        list.add(readLine()!!.toInt())
    }
    
    // Lê os valores de drop e take
    val dropCount = readLine()!!.toInt()
    val takeCount = readLine()!!.toInt()
    
    // TODO: Escreva seu código abaixo
    // Use drop() e take() para extrair a seção do meio
    
    
    // Imprime o resultado
    println(result)
}
quiz iconTeste seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

Todas as lições de Fundamentos

Pratique por conta própria: Playground de Kotlin