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)) // []Wyzwanie
ŚredniOtrzymasz 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
noznaczająca liczbę elementów - Kolejne
nwierszy: 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)
}Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.
Wszystkie lekcje w sekcji Podstawy
4Operatory – część 1
Operatory arytmetyczneOperator moduloPrzypisanie z operatoremOperatory porównaniaPowtórka – proste działania matematyczne7Podstawowe wejście/wyjście
Funkcja printlnSzablony ciągów znakówWczytywanie danych przez ReadLineKonwersja typówPowtórka — lata do emeryturyPowtórka — prawda czy fałsz10Funkcje
Deklarowanie funkcjiParametry i argumentyWartości zwracaneArgumenty nazwaneWartości domyślneFunkcje z pojedynczym wyrażeniemPowtórka – funkcja SigmaPowtórka – funkcja walidująca2Zmienne
Val a VarWnioskowanie o typieLiczbyŁańcuch znakówWartość logicznaKonwencje nazewnictwaPowtórzenie – inicjalizacja zmiennych5Operatory, część 2
Operatory logiczne, część 1Operatory logiczne, część 2Operatory logiczne, część 3Operator trójargumentowy z wyrażeniem ifPowtórka — prosta logika8Kalkulator podziału rachunku
Wiadomość powitalnaPobieranie danych11FizzBuzz z niespodzianką
Omówienie gryFunkcja FizzBuzz14Zaawansowane listy
Wycinanie listy za pomocą SubListWycinanie listy za pomocą Take i DropOperatory sekwencjiMetoda ContainsPowtórka — wyszukiwanie strony3Obsługa wartości null
Czym jest bezpieczeństwo nullTypy dopuszczające nullOperator bezpiecznego wywołaniaOperator ElvisPodstawy wyzwania z funkcjamiAsercja wartości niebędącej nullPodsumowanie — bezpieczny dostęp6Podejmowanie decyzji
Instrukcja ifIf - elseIf jako wyrażenieWyrażenie whenWhen z zakresamiPowtórka — prosty kalkulator9Pętle
Pętla forPętla whilePętla do-whileBreakContinueZakresy w pętlachPętla zagnieżdżonaPowtórka – silniaPowtórka – dynamiczne wprowadzanie danychPoćwicz samodzielnie: Edytor online Kotlin