Odwracanie listy
Część sekcji Logika i przepływ sterowania ścieżki Dart w Coddy. Lekcja 3 z 65.
Czasami trzeba wyświetlić elementy listy w odwrotnej kolejności. Dart udostępnia właściwość .reversed, która tworzy odwrócony widok listy bez zmieniania oryginalnej listy.
Właściwość .reversed zwraca obiekt iterowalny, który przedstawia elementy listy w odwrotnej kolejności. Oznacza to, że ostatni element pojawia się jako pierwszy, przedostatni jako drugi i tak dalej.
List<int> numbers = [1, 2, 3, 4, 5];
var reversedNumbers = numbers.reversed;
print(reversedNumbers); // (5, 4, 3, 2, 1)
// Oryginalna lista pozostaje bez zmian
print(numbers); // [1, 2, 3, 4, 5]Ważnym szczegółem jest to, że .reversed zwraca obiekt iterowalny, a nie listę. Jeśli chcesz pracować z nim jak z listą, możesz przekonwertować go za pomocą .toList(). Ta właściwość jest szczególnie przydatna, gdy chcesz przetwarzać dane w odwrotnej kolejności, zachowując oryginalną listę bez zmian.
Wyzwanie
ŁatwyUtwórz program, który analizuje listę lektur, wyświetlając książki zarówno w pierwotnej, jak i odwróconej kolejności. Twój program powinien:
- Wczytać ciąg znaków reprezentujący tytuł listy lektur
- Wczytać wiele ciągów znaków reprezentujących tytuły książek (wczytywanie zakończy się po otrzymaniu pustego ciągu znaków)
- Użyć właściwości
.reversed, aby utworzyć widok listy książek w odwróconej kolejności - Wyświetlić analizę listy lektur w dokładnym formacie pokazanym poniżej
Na przykład, jeśli tytuł listy lektur to "Summer Reading", a książki to "1984", "To Kill a Mockingbird", "The Great Gatsby", program powinien wyświetlić:
Reading List: Summer Reading
Books in original order: (1984, To Kill a Mockingbird, The Great Gatsby)
Books in reversed order: (To Kill a Mockingbird, The Great Gatsby, 1984)
Total books: 3Jeśli tytuł listy lektur to "Quick Reads" i podano tylko jedną książkę "Animal Farm", program powinien wyświetlić:
Reading List: Quick Reads
Books in original order: (Animal Farm)
Books in reversed order: (Animal Farm)
Total books: 1Twój program musi używać właściwości .reversed, aby wyświetlać książki w odwrotnej kolejności. Pamiętaj, że .reversed zwraca obiekt iterowalny, więc po jego wyświetleniu zobaczysz nawiasy okrągłe zamiast kwadratowych.
Spróbuj swoich sił
import 'dart:io';
void main() {
// Wczytaj tytuł listy lektur
String? title = stdin.readLineSync();
// Wczytuj tytuły książek aż do napotkania pustego ciągu znaków
List<String> books = [];
String? book;
while ((book = stdin.readLineSync()) != null && book!.isNotEmpty) {
books.add(book);
}
// TODO: Napisz tutaj swój kod
// Użyj właściwości .reversed, aby utworzyć widok listy books w odwrotnej kolejności
// Wyświetl wynik w wymaganym formacie
}Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.
Wszystkie lekcje w sekcji Logika i przepływ sterowania
1Zaawansowana manipulacja listami
Właściwości listy: first i lastStan listy: isEmpty i isNotEmpOdwracanie listyDodawanie do listy: insertUsuwanie z listy: removeWhereWyszukiwanie na liście: indexOfSortowanie listyMieszanie elementów listyPodsumowanie – Organizator listy4Zaawansowane operacje na mapach
Iterowanie po mapieSprawdzanie kluczy i wartościWłaściwości mapy: klucze i wartościDodawanie warunkowe: putIfAbsentUsuwanie wpisów z mapyZagnieżdżone mapyPodsumowanie – aktualizacja stanu magazynowego2Operacje funkcyjne na listach
Przekształcanie za pomocą 'map'Filtrowanie za pomocą 'where'Używanie '.toList()'Sprawdzanie warunków za pomocą 'any'Warunki z użyciem 'every'Wyszukiwanie za pomocą 'firstWhere'Podsumowanie — filtrowanie danych5Projekt: Kalkulator koszyka zakupowego
Konfiguracja projektuDodawanie produktów do koszyka3Zbiory
Czym jest zbiór?Tworzenie zbioruDodawanie i usuwanie elementów ze zbiorówSprawdzanie, czy element znajduje się w zbiorzeKonwersja listy na zbiórSuma zbiorówCzęść wspólna zbiorówRóżnica zbiorówPodsumowanie — unikalna lista gościPoćwicz samodzielnie: Kompilator Dart online