Ottenere la forma della lista in Python

Muhammad Maisam Abbas 19 settembre 2023
  1. Utilizza la funzione len() per ottenere la forma di una lista unidimensionale in Python
  2. Utilizza le comprensioni di lista e la funzione len() per ottenere la forma di liste nidificate in Python
  3. Utilizza NumPy per ottenere la forma di liste multidimensionali in Python
  4. Utilizza la ricorsione per ottenere la forma di liste nidificate in modo irregolare in Python
  5. Conclusione
Ottenere la forma della lista in Python

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.

Muhammad Maisam Abbas avatar Muhammad Maisam Abbas avatar

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.

LinkedIn

Articolo correlato - Python List