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)) // []Desafio
MédioVocê 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
nrepresentando o número de elementos - Próximas
nlinhas: 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)
}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
4Operadores – Parte 1
Operadores aritméticosOperador móduloAtribuição aumentadaOperadores de comparaçãoRecapitulação – Matemática simples7Entrada e Saída Básicas
Função PrintlnTemplates de StringEntrada com ReadLineConversão de TiposRevisão - Anos até a AposentadoriaRevisão - Verdadeiro ou Falso10Funções
Declare uma funçãoParâmetros e argumentosValores de retornoArgumentos nomeadosValores padrãoFunções de expressão únicaRecapitulação — função SigmaRecapitulação — função de validação2Variáveis
Val vs VarInferência de TiposNúmerosStringBooleanoConvenções de NomenclaturaRecapitulação - Inicializar Variáveis5Operadores – Parte 2
Operadores lógicos – Parte 1Operadores lógicos – Parte 2Operadores lógicos – Parte 3Ternário com expressão ifRecapitulação – Lógica simples8Calculadora de Divisão da Conta
Mensagem de Boas-vindasObtendo a Entrada11FizzBuzz com uma Reviravolta
Visão Geral do JogoA Função FizzBuzz14Listas Avançadas
Fatiamento de Listas com SubListFatiamento de Listas com Take DropOperadores de SequênciaO Método ContainsRevisão - Pesquisar uma Página3Nullabilidade
O que é Null SafetyTipos anuláveisOperador de chamada seguraOperador ElvisNoções básicas do desafio de funçõesAsserção de não nuloRecapitulação - Acesso seguro6Tomada de Decisões
Instrução IfIf - ElseIf como ExpressãoExpressão WhenWhen com IntervalosRecapitulação - Calculadora Simples9Laços de Repetição
Laço ForLaço WhileLaço Do-WhileBreakContinueIntervalos em LaçosLaço AninhadoRecapitulação - FatorialRecapitulação - Entrada Dinâmica12Fundamentos de Listas
List vs MutableListAcessando ElementosModificando ListasMétodos de ListaPair e TripleRecapitulação - Lista de ProdutosRecapitulação - Lista Invertida15Rastreador de Despesas Diárias
Visão Geral do ProjetoSair do ProgramaPratique por conta própria: Playground de Kotlin