Proprietà delle liste: primo e ultimo
Fa parte della sezione Logica e flusso del percorso Dart di Coddy. Lezione 1 di 65.
Quando lavori con le liste, spesso devi accedere al primo o all’ultimo elemento. Invece di usare numeri di indice come [0] o [list.length - 1], Dart fornisce due comode proprietà che semplificano molto questa operazione.
La proprietà .first ti restituisce il primo elemento di una lista, mentre la proprietà .last ti restituisce l’ultimo elemento. Queste proprietà sono più leggibili e meno soggette a errori rispetto al calcolo delle posizioni degli indici.
List<String> planets = ['Mercury', 'Venus', 'Earth', 'Mars'];
String firstPlanet = planets.first; // 'Mercury'
String lastPlanet = planets.last; // 'Mars'Queste proprietà funzionano con qualsiasi lista non vuota e gestiscono automaticamente i calcoli degli indici. In questo modo, il tuo codice è più pulito e facile da capire quando devi lavorare con gli elementi all'inizio o alla fine delle tue liste.
Sfida
FacileCrea un programma che analizzi una playlist musicale accedendo alla prima e all’ultima canzone. Il tuo programma dovrebbe:
- Leggere un input stringa che rappresenta il nome della playlist
- Leggere più input stringa che rappresentano i titoli delle canzoni (l’input terminerà quando riceverai una stringa vuota)
- Usare la proprietà
.firstper ottenere la prima canzone della playlist - Usare la proprietà
.lastper ottenere l’ultima canzone della playlist - Stampare l’analisi della playlist nel formato esatto mostrato qui sotto
Per esempio, se il nome della playlist è "My Favorites" e le canzoni sono "Bohemian Rhapsody", "Imagine", "Hotel California", il tuo programma dovrebbe produrre:
Playlist: My Favorites
Total songs: 3
Opening track: Bohemian Rhapsody
Closing track: Hotel CaliforniaIl tuo programma deve gestire playlist con qualsiasi numero di canzoni e usare le proprietà .first e .last per accedere alla prima e all’ultima traccia.
Provalo tu
import 'dart:io';
void main() {
// Leggi il nome della playlist
String? playlistName = stdin.readLineSync();
// Leggi i brani fino a una stringa vuota
List<String> songs = [];
String? song;
while ((song = stdin.readLineSync()) != null && song!.isNotEmpty) {
songs.add(song);
}
// TODO: Scrivi il tuo codice qui sotto
// Usa songs.first e songs.last per ottenere il brano iniziale e quello finale
// Mostra l'analisi della playlist
print("Playlist: $playlistName");
print("Total songs: ${songs.length}");
// Stampa qui il brano iniziale e quello finale
}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