Ottenere la forma della lista in Python
-
Utilizza la funzione
len()
per ottenere la forma di una lista unidimensionale in Python -
Utilizza le comprensioni di lista e la funzione
len()
per ottenere la forma di liste nidificate in Python - Utilizza NumPy per ottenere la forma di liste multidimensionali in Python
- Utilizza la ricorsione per ottenere la forma di liste nidificate in modo irregolare in Python
- Conclusione
In Python, capire la forma di una lista è fondamentale quando si lavora con strutture dati, specialmente in scenari che coinvolgono liste multidimensionali o nidificate. Questo articolo esplora vari metodi per determinare la forma di una lista in Python, che vanno da semplici liste unidimensionali a complesse liste multidimensionali o nidificate in modo irregolare.
Utilizza la funzione len()
per ottenere la forma di una lista unidimensionale in Python
Il metodo più semplice per ottenere la forma di una lista in Python è utilizzare la funzione len()
. Fornisce la lunghezza (numero di elementi) di una lista, dando effettivamente la dimensione della prima dimensione.
La funzione len()
ha una sintassi semplice e concisa:
len(object)
L’oggetto
è l’oggetto per il quale si desidera determinare la lunghezza. Può essere una sequenza (come una lista, una tupla o una stringa) o una collezione (come un dizionario o un insieme).
L’esempio di codice seguente mostra come utilizzare il metodo len()
per ottenere la forma di una lista in Python.
my_list = [1, 2, 3, 4, 5]
length = len(my_list)
print("Length of the list:", length)
Output:
Length of the list: 5
In questo esempio, viene calcolata la lunghezza della lista my_list
e viene stampata sulla console.
Utilizza le comprensioni di lista e la funzione len()
per ottenere la forma di liste nidificate in Python
Oltre a determinare la lunghezza di una lista unidimensionale (piatta), possiamo anche utilizzare la funzione len()
per determinare la forma di liste nidificate (2D o multidimensionali).
Nell’esempio seguente, determiniamo il numero di righe e colonne in una lista nidificata 2D.
nested_list = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
num_rows = len(nested_list)
# Assuming all sublists have the same number of columns
num_cols = len(nested_list[0])
print(f"Number of rows: {num_rows}, Number of columns: {num_cols}")
Output:
Number of rows: 3, Number of columns: 3
Qui, num_rows
rappresenta il numero di righe (sottoliste) e num_cols
rappresenta il numero di colonne (elementi in ciascuna sottolista) nella lista nidificata.
Utilizza NumPy per ottenere la forma di liste multidimensionali in Python
Se vogliamo che il nostro codice funzioni con qualsiasi lista multidimensionale, possiamo utilizzare l’attributo .shape
di NumPy. Restituisce una tupla che contiene il numero di elementi in ciascuna dimensione di un array.
Il pacchetto NumPy è stato originariamente progettato per essere utilizzato con array ma può funzionare anche con liste. NumPy è un pacchetto esterno e non viene preinstallato con Python, quindi è necessario installarlo prima di usarlo.
Il comando per installare il pacchetto NumPy
è il seguente.
pip install numpy
L’esempio di codice seguente mostra come ottenere la forma di una lista multidimensionale utilizzando NumPy.
import numpy as np
my_array = np.array([[1, 2, 3], [4, 5, 6]])
num_rows, num_cols = my_array.shape
print(f"Number of rows: {num_rows}, Number of columns: {num_cols}")
Output:
Number of rows: 2, Number of columns: 3
Qui, viene creato un array NumPy my_array
e quindi ne viene recuperata la forma utilizzando l’attributo .shape
. Questo metodo funziona senza problemi per array multidimensionali, fornendo sia il numero di righe che di colonne.
Utilizza la ricorsione per ottenere la forma di liste nidificate in modo irregolare in Python
In alcuni casi, potremmo incontrare liste nidificate in modo irregolare, in cui la profondità dell’imbracatura varia e le sottoliste hanno lunghezze diverse. Per gestire tali scenari, possiamo utilizzare una funzione ricorsiva.
def get_shape(data):
if isinstance(data, list):
return [len(data)] + get_shape(data[0])
else:
return [] # Assuming leaf elements are considered as a single column
nested_list = [[1, 2], [3, 4, 5], [6, [7, 8]]]
shape = get_shape(nested_list)
num_rows, num_cols = shape
print(f"Number of rows: {num_rows}, Number of columns: {num_cols}")
Output:
Number of rows: 3, Number of columns: 2
La funzione get_shape()
naviga in modo ricorsivo attraverso la lista nidificata, contando il numero di righe in ogni dimensione e assumendo che gli elementi foglia siano considerati come una singola colonna. Questo approccio fornisce sia il numero di righe che di colonne per liste nidificate in modo irregolare.
Conclusione
L’approccio più semplice per ottenere la forma di una lista unidimensionale in Python consiste nell’utilizzare la funzione len()
. Per le liste nidificate, la comprensione delle liste insieme alla funzione len()
possono aiutare a determinare in modo efficace il numero di righe e colonne.
Per scenari più avanzati che coinvolgono array multidimensionali, l’attributo .shape
di NumPy fornisce un modo conveniente per ottenere il numero di righe e colonne. Infine, quando si lavora con liste nidificate in modo irregolare, in cui le sottoliste hanno profondità e lunghezze variabili, è possibile utilizzare una funzione ricorsiva per determinare in modo accurato la forma.
Maisam is a highly skilled and motivated Data Scientist. He has over 4 years of experience with Python programming language. He loves solving complex problems and sharing his results on the internet.
LinkedInArticolo correlato - Python List
- Converti un dizionario in una lista in Python
- Rimuovi i duplicati dall'lista in Python
- Rimuovi tutte le occorrenze di un elemento da una lista in Python
- Ottieni la media di una lista in Python
- Qual è la differenza tra i metodi di elencazione, aggiungere ed estendere
- Come convertire una lista in stringa in Python