lettura normale

Lo slicing in Python

Lo slicing è una delle funzioni più utili e potenti del linguaggio Python per elaborare le sequenze di dati. In questa lezione ti spiego cos'è lo slicing, come funziona e come usarlo in Python.

Cos'è lo slicing? Lo slicing è una tecnica di Python che ti permette di selezionare ed estrarre una parte della sequenza dei dati (es. stringhe, liste, tuple, ecc.) compresa tra due indici arbitrari. Ad esempio, puoi usare lo slicing per estrarre una sottostringa da una stringa più grande, una sottolista da una lista, ecc.

Come funziona lo slicing?

Per usare lo slicing in Pyhon devi usare questa sintassi

[start:end:step]

La sintassi è composta da tre parametri

  • start è la posizione iniziale nell'indice dei dati che vuoi estrarre. E' inclusa nella selezione.
  • end è la posizione finale dei dati da estrarre. E' esclusa dalla selezione.
  • step è il passo tra un elemento e l'altro. Di default è uguale a 1.

Nota. Se non specifichi uno di questi parametri, per impostazione predefinita lo start è la posizione zero nell'indice, l'end è l'ultima posizione dell'indice e lo step è uguale a 1.

Ti faccio un esempio pratico

Crea una variabile di tipo stringa.

>>> stringa = "Questa è una stringa di esempio"

Poi digita il comando stringa[9:12]

>>> stringa[9:12]

Questo comando preleva la sottostringa che inizia nella posizione indice 9 della stringa e termina nella posizione 12 (esclusa).

un esempio di indicizzazione

Nota. Nel linguaggio Python il primo carattere di una stringa occupa la posizione zero nell'indice. Il secondo carattere occupa la posizione uno, e via dicendo. Lo stesso vale anche per tutte le altre sequenze di dati in Python (es. liste, tuple, ecc.).

In questo caso Python estrae la sottostringa "una"

una

Ti faccio un altro esempio.

Crea una lista contenente una sequenza di numeri da 1 a 10

>>> lista = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

Poi digita lista[0:3] per selezionare i primi tre numeri della lista.

>>> lista[0:3]

In questo caso lo start è 0 e l'end è 3. Il pararametro end non l'hai specificato. Quindi è uguale a 1 di default.

Il comando restituisce i primi tre elementi della lista.

[1, 2, 3]

Ora digita lista[2:5]

>>>lista[2:5]

Questo comando seleziona la porzione dei dati dall'elemento nella posizione 2 all'elemento nella posizione 5 (esclusa).

[3, 4, 5]

In questo modo puoi estrarre qualsiasi sottolista anche intermedia.

Spiegazione. L'elemento '3' si trova nella posizione 2 dell'indice della lista, ossia lista(2)=3. L'elemento 5 si trova nella posizione 4 dell'indice, ossia lista(4)=5.
la sottolista

Se non specifichi un parametro dello slicing, Python considera il valore di default.

Adesso, digita il comando lista[4:]

>>> lista[4:]

In questo caso Python estrae una sottolista dalla posizione 4 dell'indice in poi, fino all'ultimo elemento della lista.

la sottolista

Il risultato è la sottolista seguente

[5, 6, 7, 8, 9, 10]

Puoi anche modificare il passo della selezione.

Ad esempio, digita lista[0:5:2]

>>> lista[0:5:2]

Python estrae una sottolista dall'elemento 0 all'elemento 5 saltando gli elementi intermedi.

la sottolista

In questo caso la sottolista estratta è la seguente.

[1, 3, 5]

Inoltre, se indichi un numero negativo Python considera le posizioni a partire dall'ultimo elemento.

Ad esempio, per selezionare gli ultimi tre elementi della lista digita lista[-3:]

>>> lista[-3:]

In questo caso Python estrae dalla lista gli elementi a partire dalla terz'ultima posizione in poi.

l'estrazione degli ultimi elementi

Il risultato sono gli elementi seguenti

[8, 9, 10]

Se nello slicing non specifichi nessun indice di inizio o di fine, Python restituisce una copia della sequenza.

Ad esempio, digita lista[:]

>>> lista[:]

Il risultato di ritorno è l'intera lista.

[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

Se vuoi ottenere una lista invertita, ti basta selezionare tutta la sequenza indicando come passo -1

>>> lista[::-1]

Il risultato è la sequenza dalla fine all'inizio

[10, 9, 8, 7, 6, 5, 4, 3, 2, 1]

Una particolarità dello slicing è che non solleva eccezione quando indichi degli indici fuori intervallo. Ad esempio, se indichi

>>> lista[-100:100]

Il risultato è la sequenza dalla fine all'inizio

[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

Questi sono esempi sono solo alcune delle tante applicazioni pratiche dello slicing.

Lo slicing è uno strumento molto potente nella manipolazione delle seguenze di dati, siano esse liste, stringhe, tuple.




Se qualcosa non ti è chiaro, scrivi la tua domanda nei commenti.




FacebookTwitterLinkedinLinkedin