Comprensioni di Python: comprensioni di List, Dict e Set
Scrivi Python più pulito e più veloce. Elenco principale, dizionario e comprensioni di set con esempi pratici, condizioni di filtraggio e cicli nidificati.
Panoramica
Le comprensioni sono una delle funzionalità più amate di Python, poiché offrono una sintassi concisa e altamente leggibile per creare nuove raccolte (elenchi, dizionari e set) da iterabili esistenti. Invece di scrivere cicli "for" su più righe e aggiungere manualmente elementi, le comprensioni consentono di eseguire la stessa trasformazione, filtraggio e assegnazione in un'unica riga di codice espressiva.
Le comprensioni delle liste sono la variante più comune, strutturata come "[espressione per l'elemento in condizione iterabile se]". Sotto il cofano, Python ottimizza le comprensioni per funzionare a una velocità vicina a quella del C, spesso surclassando i cicli manuali "for" equivalenti perché il looping è gestito dall'interprete sottostante. Sono ideali per trasformazioni rapide, ad esempio la conversione di un elenco di temperature Celsius in Fahrenheit o l'estrazione di chiavi specifiche da un elenco di record utente.
Oltre agli elenchi, Python supporta le comprensioni di dizionario e set. Una comprensione del dizionario, definita con parentesi graffe e coppie chiave-valore (ad esempio, `{key: value for x in iterable}`), è molto utile per invertire coppie di mappature o analizzare metadati. Le comprensioni degli insiemi generano raccolte uniche rimuovendo automaticamente i duplicati. Sebbene le comprensioni siano incredibilmente potenti, gli sviluppatori dovrebbero evitare di complicarle eccessivamente; se una comprensione richiede cicli annidati o condizioni complesse, un ciclo tradizionale "for" è solitamente più facile da leggere e mantenere.
Codice e output di esecuzione
Dimostra le trasformazioni degli elenchi, il filtraggio condizionale e la creazione di un dizionario dalla mappatura degli input.
numbers = [1, 2, 3, 4, 5, 6]
# List comprehension with filter (even squares)
even_squares = [x**2 for x in numbers if x % 2 == 0]
# Set comprehension (unique word lengths)
words = ["python", "java", "ruby", "python"]
word_lengths = {len(w) for w in words}
# Dictionary comprehension (number: square)
square_map = {n: n**2 for n in numbers[:4]}
print(f"Even squares: {even_squares}")
print(f"Unique lengths: {word_lengths}")
print(f"Square mapping: {square_map}")Even squares: [4, 16, 36]
Unique lengths: {4, 6}
Square mapping: {1: 1, 2: 4, 3: 9, 4: 16}Implementazione passo dopo passo
- Filtraggio di valori vuoti o dati non validi dai log
- Mappatura dei payload API in mappature di dati chiave-valore
- Formattazione rapida delle righe del database in semplici elenchi
Domande frequenti
Le comprensioni sono più veloci dei loop normali?
Sì, nella maggior parte dei casi sono più veloci perché l'iterazione è gestita da codice C ottimizzato all'interno dell'interprete Python.
Dovrei sempre usare le comprensioni?
No. La leggibilità del codice è la priorità di Python. Se la comprensione ha una logica nidificata o è più lunga di una o due righe, è preferibile un ciclo tradizionale.
Argomenti correlati
Scopri tutto sugli elenchi Python. Scopri come creare, suddividere, modificare ed eseguire l'iterazione degli array in Python in modo nativo.
Dizionari PythonDizionari principali di Python. Impara a archiviare, recuperare e gestire i dati delle coppie chiave-valore. Comprendere le prestazioni e le best practice per le mappature.
Insiemi PythonSet principali in Python. Impara a memorizzare valori univoci, eseguire intersezioni, unioni, differenze e comprendere i vantaggi prestazionali dell'hashing.
Risorse Python consigliate
Espandi le tue conoscenze con tutorial interattivi, foglietti illustrativi e confronti di codici correlati.
Come ordinare un elenco in Python
Scopri come ordinare un elenco in Python utilizzando il metodo sort() e la funzione sorted(). Scopri l'ordinamento delle chiavi personalizzato e gli esempi di ordine inverso.
Foglio informativo sulla comprensione di Python
Scrivi elenchi concisi e leggibili, dizionari, set e comprensioni di generatori in Python.
Python vs JavaScript: quale linguaggio di programmazione è il migliore?
Un confronto completo tra Python e JavaScript. Esplora le differenze di sintassi, le prestazioni, i casi d'uso (backend e frontend) ed esempi di codifica.