logo

Come inizializzare un elenco in Python?

Qualsiasi oggetto Python può essere contenuto in un gruppo di valori ordinati in un elenco Python. Poiché l'elenco è una struttura dati modificabile in Python, possiamo aggiungere, rimuovere o modificare i valori esistenti in questo contenitore. A differenza dei set, l'elenco consente numerose istanze dello stesso valore e le tratta come un elemento diverso. In questo tutorial impareremo come inizializzare un oggetto elenco in Python.

Inizializzare gli elenchi utilizzando le parentesi quadre

Usare una parentesi quadra è un modo per inizializzare una lista senza valori se vogliamo costruire una lista vuota in Python senza valori. Per inizializzare un elenco, dobbiamo solo specificare una coppia di parentesi quadre con o senza valori degli elementi.

Codice

 # Python program to show how to initialize a list using square brackets # Initializing an empty list list_ = [] print('An empty list: ', list_) # Initializing a list with some values list_ = [1, 3, 5, 7] print('A non-Empty list: ', list_) 

Produzione:

 An empty list: [] A non-Empty list: [1, 3, 5, 7] 

Utilizzo della funzione integrata list() per inizializzare un elenco

La funzione list() di Python costruisce la lista, un oggetto iterabile. Pertanto, questo è un altro modo per creare un elenco Python vuoto senza dati in questo linguaggio di codifica.

sistema operativo

Un oggetto iteratore, una sequenza che consente l'iterazione o un contenitore possono tutti essere iterabili. Se non viene fornito alcun input viene costruito un nuovo elenco vuoto.

Codice

 # Python program to show how to initialize a list using the built-in list function # Initializing an empty list list_ = list() print('An empty list: ', list_) # Initializing a non-empty list list_ = list([1, 2, 3]) print('A non-empty list: ', list_) 

Produzione:

 An empty list: [] A non-empty list: [1, 2, 3] 

Il metodo delle parentesi quadre è preferito rispetto alla funzione integrata list() perché è più chiaro e più illustrativo.

Utilizzo delle comprensioni delle liste per inizializzare una lista

Possiamo utilizzare l'approccio di comprensione delle liste per impostare i parametri predefiniti della lista. Comprende un'espressione racchiusa tra parentesi quadre, un'istruzione for e un'istruzione if facoltativa che può o meno seguire. Qualsiasi elemento che desideriamo aggiungere all'elenco può essere scritto come espressione. L'espressione sarebbe 0 se l'utente inizializzasse l'elenco con zeri.

La comprensione delle liste è un approccio elegante, diretto e ben noto alla costruzione di una lista basata su un iteratore.

Codice

 # Python program to show how to initialize a list using list comprehension # Initializing a list list_ = [item for item in range(10)] print('The list was created using list comprehension: ', list_) 

Produzione:

servizi web Java
 The list was created using list comprehension: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] 

Questa tecnica inizializza le liste molto più velocemente dei cicli for e while di Python.

Inizializza un elenco Python utilizzando l'operatore *

Un altro modo per inizializzare una lista in Python è usare l'operatore *. Crea un elenco con più valori. La sintassi per utilizzare questo operatore è [elemento] * n. Qui n è il numero di volte che vogliamo ripetere l'elemento nell'elenco.

Questo metodo aiuta quando desideriamo inizializzare un elenco di lunghezze predefinite.

Codice

stringa.valoredi
 # Python program to show how to use the * operator to initialize a list list_ = [5]*10 print (list) 

Produzione:

 [5, 5, 5, 5, 5, 5, 5, 5, 5] 

Questo metodo è molto efficiente ed è il modo più veloce per creare un elenco. Confronteremo il tempo impiegato dai metodi più avanti in questo tutorial.

L'unico svantaggio dell'utilizzo di questo operatore per inizializzare un elenco Python è quando dobbiamo creare un elenco 2D, poiché questo metodo creerà solo un elenco superficiale, ovvero creerà un singolo oggetto elenco e tutti gli indici faranno riferimento a questo oggetto che sarà molto scomodo. Questo è il motivo per cui utilizziamo la comprensione delle liste quando dobbiamo creare liste 2D.

Utilizzando un ciclo for e append()

Creeremo un elenco vuoto ed eseguiremo un ciclo for per aggiungere elementi utilizzando la funzione append() dell'elenco.

Codice

 # Python program to show how to use a for loop to initialize a list arr = [] for i in range(1000): arr.append(0) 

Utilizzo di un ciclo While per inizializzare una lista

Possiamo usare un ciclo while proprio come abbiamo usato il ciclo for per inizializzare una lista.

Codice

 # Python program to initialize a list using a while loop # Creating an empty list array = [] # Declaring counter variables i = 0 # Starting a while loop while(i <10): array.append(0) i +="1" print(array) < pre> <p> <strong>Output:</strong> </p> <pre> [0, 0, 0, 0, 0, 0, 0, 0, 0, 0] </pre> <h2>Time Complexity</h2> <p>Let us now see how long each of the described approaches will take. We will initialize a list of 100000 elements 1000 times. We will calculate the average time each method takes to perform this task.</p> <p> <strong>Code</strong> </p> <pre> # Python program to see the time taken by various methods to initialize a list # importing the time module to calculate the time taken by a chunk of code import time # initializing the lists for various methods forLoop = [] whileLoop = [] listComprehension = [] starOperator = [] # repeating the process of generating a list of 100000 elements 500 times # Then calculate the average time taken by the methods for i in range(1000): # starting time of the execution begin = time.time() # declaring an empty list list_ = [] # running a for loop and iterating it 100000 times for i in range(100000): list_.append(0) # stoping time of the execution end = time.time() forLoop.append(end - begin) # starting time of the execution begin = time.time() # declaring an empty list list_ = [] i = 0 # COunter variable # running a while loop and iterating it 100000 times while i <100000: 100000 list_.append(0) i +="1" end="time.time()" whileloop.append(end - begin) begin="time.time()" # using a list comprehension to initialize the for in range(100000)] listcomprehension.append(end astrick (*) operator * staroperator.append(end print('the average execution time of loop is: ', sum(forloop) 1000) while sum(whileloop) sum(listcomprehension) taken operator: sum(staroperator) < pre> <p> <strong>Output:</strong> </p> <pre> The average execution time of for loop is: 0.01166958212852478 The average execution time of the while loop is: 0.01916465663909912 The average execution time of list comprehension is: 0.005084690093994141 The average execution time was taken of * operator: 0.00028331947326660156 </pre> <p>We can see that for and while loops take almost the same execution time. However, for loop is a little better than the while loop.</p> <p>List comprehension shows much better performance than the for and while loops. It is 2-3 times faster than the loops. Thus, list comprehension is much more efficient than the append() function of the lists.</p> <p>The * operator has shown the best performance out of all the four methods.</p> <hr></100000:></pre></10):>

Complessità temporale

Vediamo ora quanto tempo richiederà ciascuno degli approcci descritti. Inizializzeremo un elenco di 100000 elementi 1000 volte. Calcoleremo il tempo medio impiegato da ciascun metodo per eseguire questa attività.

Codice

stringa trova c++
 # Python program to see the time taken by various methods to initialize a list # importing the time module to calculate the time taken by a chunk of code import time # initializing the lists for various methods forLoop = [] whileLoop = [] listComprehension = [] starOperator = [] # repeating the process of generating a list of 100000 elements 500 times # Then calculate the average time taken by the methods for i in range(1000): # starting time of the execution begin = time.time() # declaring an empty list list_ = [] # running a for loop and iterating it 100000 times for i in range(100000): list_.append(0) # stoping time of the execution end = time.time() forLoop.append(end - begin) # starting time of the execution begin = time.time() # declaring an empty list list_ = [] i = 0 # COunter variable # running a while loop and iterating it 100000 times while i <100000: 100000 list_.append(0) i +="1" end="time.time()" whileloop.append(end - begin) begin="time.time()" # using a list comprehension to initialize the for in range(100000)] listcomprehension.append(end astrick (*) operator * staroperator.append(end print(\'the average execution time of loop is: \', sum(forloop) 1000) while sum(whileloop) sum(listcomprehension) taken operator: sum(staroperator) < pre> <p> <strong>Output:</strong> </p> <pre> The average execution time of for loop is: 0.01166958212852478 The average execution time of the while loop is: 0.01916465663909912 The average execution time of list comprehension is: 0.005084690093994141 The average execution time was taken of * operator: 0.00028331947326660156 </pre> <p>We can see that for and while loops take almost the same execution time. However, for loop is a little better than the while loop.</p> <p>List comprehension shows much better performance than the for and while loops. It is 2-3 times faster than the loops. Thus, list comprehension is much more efficient than the append() function of the lists.</p> <p>The * operator has shown the best performance out of all the four methods.</p> <hr></100000:>

Possiamo vedere che i cicli for e while richiedono quasi lo stesso tempo di esecuzione. Tuttavia, il ciclo for è leggermente migliore del ciclo while.

La comprensione delle liste mostra prestazioni molto migliori rispetto ai cicli for e while. È 2-3 volte più veloce dei loop. Pertanto, la comprensione delle liste è molto più efficiente della funzione append() delle liste.

L'operatore * ha mostrato le prestazioni migliori tra tutti e quattro i metodi.