Invertire una lista
Fa parte della sezione Logica e flusso del percorso Dart di Coddy. Lezione 3 di 65.
A volte devi visualizzare gli elementi di una lista in ordine inverso. Dart mette a disposizione la proprietà .reversed, che crea una vista della tua lista in ordine inverso senza modificare la lista originale.
La proprietà .reversed restituisce un iterabile che presenta gli elementi dell’elenco in ordine inverso. Ciò significa che l’ultimo elemento appare per primo, il penultimo appare per secondo e così via.
List<int> numbers = [1, 2, 3, 4, 5];
var reversedNumbers = numbers.reversed;
print(reversedNumbers); // (5, 4, 3, 2, 1)
// La lista originale rimane invariata
print(numbers); // [1, 2, 3, 4, 5]Un dettaglio importante è che .reversed restituisce un iterabile, non una lista. Se devi usarlo come lista, puoi convertirlo usando .toList(). Questa proprietà è particolarmente utile quando devi elaborare i dati in ordine inverso mantenendo intatta la lista originale.
Sfida
FacileCrea un programma che analizzi una lista di lettura mostrando i libri sia nell'ordine originale che in quello inverso. Il tuo programma deve:
- Leggere una stringa in input che rappresenta il titolo della lista di lettura
- Leggere più stringhe in input che rappresentano i titoli dei libri (l'input terminerà quando riceverai una stringa vuota)
- Usare la proprietà
.reversedper creare una vista inversa della lista di libri - Stampare l'analisi della lista di lettura nel formato esatto mostrato qui sotto
Ad esempio, se il titolo della lista di lettura è "Summer Reading" e i libri sono "1984", "To Kill a Mockingbird", "The Great Gatsby", il tuo programma dovrebbe produrre:
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: 3Se il titolo della lista di lettura è "Quick Reads" e viene fornito un solo libro, "Animal Farm", il tuo programma dovrebbe produrre:
Reading List: Quick Reads
Books in original order: (Animal Farm)
Books in reversed order: (Animal Farm)
Total books: 1Il tuo programma deve usare la proprietà .reversed per mostrare i libri in ordine inverso. Ricorda che .reversed restituisce un iterabile, quindi, quando lo stampi, verrà mostrato tra parentesi tonde anziché tra parentesi quadre.
Provalo tu
import 'dart:io';
void main() {
// Leggi il titolo della lista di lettura
String? title = stdin.readLineSync();
// Leggi i titoli dei libri fino a incontrare una stringa vuota
List<String> books = [];
String? book;
while ((book = stdin.readLineSync()) != null && book!.isNotEmpty) {
books.add(book);
}
// TODO: Scrivi qui il tuo codice
// Usa la proprietà .reversed per creare una vista in ordine inverso della lista books
// Stampa l'output nel formato richiesto
}Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.
Tutte le lezioni di Logica e flusso
1Manipolazione avanzata delle liste
Proprietà delle liste: primo e ultimoStato della lista: isEmpty e isNotEmpInvertire una listaAggiungere a una lista: insertRimozione dalla lista: removeWhereRicerca in una lista: indexOfOrdinare una listaMescolare una listaRiepilogo - Organizzatore di liste4Manipolazione avanzata delle mappe
Iterare su una mappaVerificare chiavi e valoriProprietà delle mappe: chiavi e valoriAggiunta condizionale: putIfAbsentRimuovere elementi da una mappaMappe annidateRiepilogo - Aggiornamento dell'inventario2Operazioni funzionali sulle liste
Trasformare con 'map'Filtrare con 'where'Usare '.toList()'Verificare condizioni con 'any'Condizioni con 'every'Trovare con 'firstWhere'Riepilogo - Filtraggio dei dati3Insiemi
Che cos'è un insieme?Creare un insiemeAggiungere e rimuovere elementi dagli insiemiVerificare la presenza di elementi in un insiemeConvertire una lista in un insiemeUnione di insiemiIntersezione di insiemiDifferenza tra insiemiRiepilogo - Lista degli ospiti uniciEsercitati da solo: Compilatore Dart online