Menu
Coddy logo textTech

Wycinanie listy za pomocą Take i Drop

Część sekcji Podstawy ścieżki Kotlin w Coddy. Lekcja 80 z 93.

Kotlin udostępnia dwie prostsze metody pobierania części listy, gdy potrzebujesz tylko elementów z początku lub końca: take() i drop().

Metoda take() zwraca nową listę zawierającą pierwsze n elementów:

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

Metoda drop() działa odwrotnie. Pomija pierwsze n elementów i zwraca pozostałe:

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

W przeciwieństwie do subList() te metody zwracają niezależne kopie, a nie widoki. Są też bardziej czytelne, gdy po prostu chcesz uzyskać „kilka pierwszych” elementów lub „wszystkie oprócz kilku pierwszych”.

Możesz połączyć obie metody, aby wyodrębnić środkową część:

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

Jeśli zażądasz więcej elementów, niż istnieje, te metody po prostu zwrócą dostępne elementy bez zgłaszania błędu:

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

Wyzwanie

Średni

Otrzymasz listę liczb całkowitych i dwie liczby: ile elementów usunąć z początku oraz ile elementów pobrać po ich usunięciu.

Użyj razem drop() i take(), aby wyodrębnić środkową sekcję listy, a następnie wypisz wyodrębnione elementy.

Format wejściowy:

  • Pierwszy wiersz: liczba całkowita n oznaczająca liczbę elementów
  • Kolejne n wierszy: liczby całkowite do dodania do listy
  • Następny wiersz: liczba elementów do usunięcia z początku
  • Ostatni wiersz: liczba elementów do pobrania po ich usunięciu

Format wyjściowy:

Wypisz wynikową listę w domyślnym formacie listy w Kotlinie.

Przykład:

Jeśli lista to [10, 20, 30, 40, 50, 60], liczba elementów do usunięcia wynosi 2, a liczba elementów do pobrania wynosi 3, wynik powinien być następujący:

[30, 40, 50]

Spróbuj swoich sił

fun main() {
    // Wczytaj liczbę elementów
    val n = readLine()!!.toInt()
    
    // Wczytaj elementy listy
    val list = mutableListOf<Int>()
    for (i in 1..n) {
        list.add(readLine()!!.toInt())
    }
    
    // Wczytaj wartości dla drop i take
    val dropCount = readLine()!!.toInt()
    val takeCount = readLine()!!.toInt()
    
    // TODO: Napisz swój kod poniżej
    // Użyj drop() i take(), aby wyodrębnić środkową część
    
    
    // Wyświetl wynik
    println(result)
}
quiz iconSprawdź się

Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.

Wszystkie lekcje w sekcji Podstawy

Poćwicz samodzielnie: Edytor online Kotlin