HOWTO · Python
Crea una lista di zeri in Python
Questo tutorial mostra come generare un elenco contenente zeri in Python. Esplora vari metodi, come la comprensione di lista, l'operatore di moltiplicazione e l'uso della libreria numpy. Che tu sia un principiante o un programmatore esperto, questa guida fornisce esempi di codice chiari e spiegazioni per aiutarti a creare in modo efficiente elenchi di zeri per i tuoi progetti.
In questa pagina
Per creare in Python una lista contenente n zeri, usa [0] * n. Per esempio, [0] * 5 crea una lista con cinque zeri interi. È la scelta più chiara quando la lunghezza necessaria è nota e ogni elemento deve avere lo stesso valore. Gli esempi seguenti usano n = 5, così puoi confrontare direttamente i diversi approcci.
Usa la moltiplicazione delle liste per creare una lista di zeri di lunghezza fissa
La moltiplicazione di una lista ne ripete gli elementi. Poiché [0] contiene un solo intero, moltiplicarla per n produce n zeri interi:
n = 5
zeros = [0] * n
Il risultato è una nuova lista. Con un conteggio pari a zero si ottiene []; anche un conteggio negativo produce [], perché Python ripete una sequenza zero volte quando il fattore è non positivo. In questo esempio il valore ripetuto è un intero, quindi ogni elemento della lista può essere riassegnato indipendentemente. Se ripeti un oggetto mutabile, come una lista annidata, ogni posizione fa riferimento allo stesso oggetto; usa invece una comprensione per creare oggetti distinti.
Usa una comprensione di liste per creare una lista di zeri
Una comprensione di liste valuta la propria espressione una volta per ogni elemento di un iterabile. In questo caso, range(n) fornisce cinque iterazioni e _ è il nome convenzionale di un valore del ciclo che l’espressione non deve usare. L’espressione tra parentesi quadre è una comprensione di liste:
n = 5
zeros = [0 for _ in range(n)]
Usa questa forma quando il valore viene calcolato a ogni iterazione o quando vuoi rendere esplicita la regola di generazione. Qui il valore del ciclo non viene usato, quindi _ è un nome convenzionale; in Python non ha un comportamento speciale. Se vuoi calcolare elementi diversi, puoi sostituire 0 con un’espressione che dipende dal valore dell’iterazione.
Usa un ciclo quando la creazione di ogni valore richiede una logica personalizzata
Un ciclo esplicito è utile quando creare ogni elemento richiede più istruzioni, una condizione o un’altra operazione. Aggiungi un valore a ogni iterazione:
n = 5
zeros = []
for _ in range(n):
zeros.append(0)
Il risultato è dello stesso tipo di lista incorporata negli esempi con moltiplicazione e comprensione. Per il semplice compito di ripetere un intero, gli altri due approcci esprimono il risultato in modo più conciso; scegli il ciclo quando il suo corpo rende più chiaro il lavoro da svolgere per ogni elemento. In un programma reale, sostituisci l’istruzione append(0) con le operazioni necessarie a calcolare o preparare ciascun valore.
Usa itertools.repeat() per ripetere zero
itertools.repeat() fornisce più volte lo stesso oggetto. Passagli il valore e il numero di ripetizioni; se ti serve una lista, passa poi l’iteratore a list():
from itertools import repeat
n = 5
zeros = list(repeat(0, n))
Questo approccio è utile quando puoi usare direttamente un iteratore o quando un iteratore che ripete un valore si inserisce bene in un’operazione più ampia. La chiamata list(...) consuma l’iteratore e memorizza tutti e cinque i valori in memoria; perciò, se il risultato desiderato è già una lista, di solito [0] * n è più semplice.
Usa NumPy quando ti serve un array numerico
Per i calcoli numerici che sfruttano le operazioni di NumPy, numpy.zeros(n) crea un array NumPy con n elementi di valore zero. Per esempio, dopo aver installato NumPy, le istruzioni import numpy as np e zeros = np.zeros(5) creano un array. Il risultato è un ndarray, non una lista Python incorporata; convertilo con zeros.tolist() solo se un’altra parte del codice richiede proprio una lista. NumPy è una dipendenza aggiuntiva ed è utile quando ti servono le sue operazioni sugli array, le forme o i tipi di dato. Per una normale lista, usa [0] * n senza aggiungere dipendenze.
Scegli la moltiplicazione per una semplice lista di lunghezza fissa, una comprensione per un’espressione valutata a ogni elemento, un ciclo per passaggi personalizzati, itertools.repeat() quando ti è utile il suo iteratore oppure NumPy quando la struttura dati desiderata è un array.