Essendo parte integrante della programmazione Python, l'elenco deve essere appreso da tutti gli utenti Python e avere una conoscenza della sua utilità e delle sue operazioni è essenziale e sempre un vantaggio.
Molte operazioni vengono eseguite negli elenchi, ma in questo articolo discuteremo della lunghezza di un elenco. La lunghezza di una lista indica il numero di elementi che contiene. Esamineremo 8 metodi diversi per trovare la lunghezza di un elenco Pitone .
Esempio:
Input: lst = [10,20,30,40] Output: 4 Explanation: The output is 4 because the length of the list is 4.>
Trova la lunghezza di una lista in Python
Di seguito sono riportati i metodi che tratteremo in questo articolo:
- Utilizzando soltanto() funzione
- Utilizzando il metodo ingenuo
- Usando length_hint()
- Utilizzando somma() metodo
- Usare un comprensione delle liste
- Utilizzando ricorsione
- Utilizzando enumerare funzione
- Utilizzando Collezioni Modulo
1. Trova la lunghezza di un elenco utilizzando la funzione len()
Pitone soltanto() function è una funzione incorporata in Python. Può essere utilizzato per trovare la lunghezza di un oggetto passando l'oggetto tra parentesi della funzione len.
Python3
# Python len()> li> => [> 10> ,> 20> ,> 30> ]> n> => len> (li)> print> (> 'The length of list is: '> , n)> |
>
>
Produzione:
The length of list is: 3>
Complessità temporale: O(n), dove n è la lunghezza dell'elenco
Spazio ausiliario: O(1)
2. Trova la lunghezza di un elenco utilizzando il metodo ingenuo
In questo metodo, è sufficiente eseguire un ciclo e aumentare il contatore fino all'ultimo elemento dell'elenco per conoscerne il conteggio. Questa è la strategia più basilare che può essere eventualmente impiegata in assenza di altre tecniche attuali.
Python3
# Initializing list> test_list> => [> 1> ,> 4> ,> 5> ,> 7> ,> 8> ]> # Printing test_list> print> (> 'The list is : '> +> str> (test_list))> # Finding length of list using loop> # Initializing counter> counter> => 0> for> i> in> test_list:> > # incrementing counter> > counter> => counter> +> 1> # Printing length of list> print> (> 'Length of list using naive method is : '> +> str> (counter))> |
>
>
Produzione:
The list is : [1, 4, 5, 7, 8] Length of list using naive method is : 5>
Complessità temporale: SU)
Spazio ausiliario: O(1)
array di oggetti in Java
3. Trova la lunghezza di un elenco utilizzando il metodo length_hint()
Questa tecnica è una tecnica meno conosciuta per trovare la lunghezza dell'elenco. Questo particolare metodo è definito nella classe operator e può anche indicare il no. degli elementi presenti nella lista. Qui, troviamo la lunghezza dell'elenco utilizzando len() e length_hint()
Python3
from> operator> import> length_hint> # Initializing list> test_list> => [> 1> ,> 4> ,> 5> ,> 7> ,> 8> ]> # Printing test_list> print> (> 'The list is : '> +> str> (test_list))> # Finding length of list using len()> list_len> => len> (test_list)> # Finding length of list using length_hint()> list_len_hint> => length_hint(test_list)> # Printing length of list> print> (> 'Length of list using len() is : '> +> str> (list_len))> print> (> 'Length of list using length_hint() is : '> +> str> (list_len_hint))> |
>
>
Produzione :
The list is : [1, 4, 5, 7, 8] Length of list using len() is : 5 Length of list using length_hint() is : 5>
4. Trova la lunghezza di un elenco utilizzando la funzione sum()
Usa l'iterazione all'interno della somma e con ogni iterazione ne aggiunge uno e alla fine dell'iterazione otteniamo la lunghezza totale dell'elenco.
Python3
emoji per iphone su telefoni Android
# Initializing list> test_list> => [> 1> ,> 4> ,> 5> ,> 7> ,> 8> ]> # Printing test_list> print> (> 'The list is : '> +> str> (test_list))> # Finding length of list> # using sum()> list_len> => sum> (> 1> for> i> in> test_list)> # Printing length of list> print> (> 'Length of list using len() is : '> +> str> (list_len))> print> (> 'Length of list using length_hint() is : '> +> str> (list_len))> |
>
>
Produzione:
The list is : [1, 4, 5, 7, 8] Length of list using len() is : 5 Length of list using length_hint() is : 5>
5. Trova la lunghezza di una lista utilizzando una comprensione della lista
Inizializza un elenco chiamato lista_test con alcuni valori, quindi inizializza una variabile chiamata length su 0. Utilizza una comprensione di lista per generare una sequenza di uno per ciascun elemento in test_list.
Questo creerà un elenco di quelli con la stessa lunghezza di test_list. Ora usa la funzione sum() per sommare tutti quelli nell'elenco generato da comprensione delle liste . Assegna la somma alla variabile lunghezza. Stampa la variabile di lunghezza.
Python3
# Define the list to be used for the demonstration> test_list> => [> 1> ,> 4> ,> 5> ,> 7> ,> 8> ]> # Calculate the length of the list using a list comprehension and the sum function> # The list comprehension generates a sequence of ones for each element in the list> # The sum function then sums all the ones to give the length of the list> length> => sum> (> 1> for> _> in> test_list)> # Print the length of the list> print> (> 'Length of list using list comprehension is:'> , length)> |
>
>Produzione
Length of list using list comprehension is: 5>
Complessità temporale: La comprensione dell'elenco crea un nuovo elenco con una lunghezza pari alla lunghezza di test_list. La funzione sum() esegue quindi un'iterazione su questo elenco per calcolare la somma. Pertanto, la complessità temporale di questo algoritmo è O(N), dove N è la lunghezza di test_list.
Spazio ausiliario: L'algoritmo crea un nuovo elenco di quelli con una lunghezza pari alla lunghezza di test_list utilizzando la comprensione delle liste. Pertanto, anche la complessità dello spazio ausiliario è O(N), dove N è la lunghezza di test_list.
6. Trovare la lunghezza di una lista utilizzando la ricorsione
Possiamo usare a funzione ricorsiva che richiede un elenco lst come input e richiama ricorsivamente se stesso, passando una fetta dell'elenco che esclude il primo elemento finché l'elenco non è vuoto.
Il caso base è quando l'elenco è vuoto, nel qual caso la funzione restituisce 0. Altrimenti aggiunge 1 al risultato della chiamata alla funzione sul resto dell'elenco.
Python3
# Define a function to count the number of elements in a list using recursion> def> count_elements_recursion(lst):> > # Base case: if the list is empty, return 0> > if> not> lst:> > return> 0> > # Recursive case: add 1 to the count of the remaining elements in the list> > return> 1> +> count_elements_recursion(lst[> 1> :])> # Test the function with a sample list> lst> => [> 1> ,> 2> ,> 3> ,> 4> ,> 5> ]> print> (> 'The length of the list is:'> , count_elements_recursion(lst))> # Output: The length of the list is: 5> |
>
>
lattice di dimensione carattereProduzione
The length of the list is: 5>
Complessità temporale: O(n) dove n è la lunghezza della lista. Questo perché la funzione effettua n chiamate ricorsive, ciascuna delle quali richiede tempo O(1), e c'è anche lavoro O(1) svolto a ciascun livello al di fuori della chiamata ricorsiva.
Complessità spaziale: O(n) dove n è la lunghezza della lista. Questo perché la funzione crea n stack frame sullo stack di chiamate a causa delle chiamate ricorsive.
7. Trova la lunghezza di un elenco utilizzando la funzione enumerate()
Pitone enumerare() Il metodo aggiunge un contatore a un iterabile e lo restituisce sotto forma di oggetto enumerativo.
Python3
# python code to find the length> # of list using enumerate function> list1> => [> 1> ,> 4> ,> 5> ,> 7> ,> 8> ]> s> => 0> for> i, a> in> enumerate> (list1):> > s> +> => 1> print> (s)> |
>
>Produzione
5>
8. Trova la lunghezza di un elenco utilizzando le raccolte
In alternativa è anche possibile utilizzare il file somma() funzione insieme al metodo valori() di Collezioni Oggetto contatore per ottenere la lunghezza dell'elenco.
Python3
from> collections> import> Counter> # Initializing list> test_list> => [> 1> ,> 4> ,> 5> ,> 7> ,> 8> ]> # Finding length of list using Counter()> list_len> => sum> (Counter(test_list).values())> print> (> 'Length of list using Counter() is:'> , list_len)> # This code is contributed by Edula Vinay Kumar Reddy> |
>
>Produzione
Length of list using Counter() is: 5>
Complessità temporale: O(n), dove n è la lunghezza dell'elenco. Questo perché la funzione Counter() ha una complessità temporale di O(n) quando applicata a un elenco di lunghezza n, e il metodo valori() e la funzione sum() hanno entrambi una complessità temporale di O(n) quando applicati ad un elenco di lunghezza n.
La complessità dello spazio: O(n), come funzione Counter(), crea un dizionario con n coppie chiave-valore, ciascuna delle quali rappresenta rispettivamente un elemento e il suo conteggio nell'elenco. Questo dizionario occupa lo spazio O(n).
Analisi delle prestazioni: Naive vs Python len() vs Python length_hint()
Quando si sceglie tra le alternative è sempre necessario avere un valido motivo per cui sceglierne una piuttosto che un’altra. Questa sezione analizza il tempo necessario per eseguirli tutti per offrire una scelta migliore da utilizzare.
Python3
from> operator> import> length_hint> import> time> # Initializing list> test_list> => [> 1> ,> 4> ,> 5> ,> 7> ,> 8> ]> # Printing test_list> print> (> 'The list is : '> +> str> (test_list))> # Finding length of list> # using loop> # Initializing counter> start_time_naive> => time.time()> counter> => 0> for> i> in> test_list:> > # incrementing counter> > counter> => counter> +> 1> end_time_naive> => str> (time.time()> -> start_time_naive)> # Finding length of list> # using len()> start_time_len> => time.time()> list_len> => len> (test_list)> end_time_len> => str> (time.time()> -> start_time_len)> # Finding length of list> # using length_hint()> start_time_hint> => time.time()> list_len_hint> => length_hint(test_list)> end_time_hint> => str> (time.time()> -> start_time_hint)> # Printing Times of each> print> (> 'Time taken using naive method is : '> +> end_time_naive)> print> (> 'Time taken using len() is : '> +> end_time_len)> print> (> 'Time taken using length_hint() is : '> +> end_time_hint)> |
>
>
Produzione:
The list is : [1, 4, 5, 7, 8] Time taken using naive method is : 2.6226043701171875e-06 Time taken using len() is : 1.1920928955078125e-06 Time taken using length_hint() is : 1.430511474609375e-06>
Nelle immagini sottostanti, si può vedere chiaramente che il tempo impiegato è ingenuo>> length_hint()> len() , ma il tempo impiegato dipende fortemente dal sistema operativo e da molti dei suoi parametri.
In due run consecutivi si possono ottenere risultati contrastanti, infatti a volte l'ingenuo impiega il minor tempo su tre. Sono possibili tutte le 6 permutazioni possibili.
ingenuo> len()> length_hint()

ingenuo> len()=length_hint()

ingenuo> length_hint()>len()

ingenuo> length_hint()> len()
Abbiamo discusso 8 diversi metodi per trovare la lunghezza di un elenco in Python. Abbiamo anche effettuato un'analisi delle prestazioni per verificare quale metodo sia il migliore.
È possibile utilizzare uno qualsiasi dei metodi sopra indicati per trovare la lunghezza di un elenco. Trovare la lunghezza dell'elenco è molto utile quando si ha a che fare con elenchi di grandi dimensioni e si desidera verificare il numero di voci.
come ordinare un array in Java
Controlla altre pagine di elenchi Python:
- Metodi dell'elenco Python
- Esercizio sull'elenco Python
- Complessità spaziale delle operazioni su liste in Python