Lezioni di Python – 5.5 Lo slicing delle liste

Lezioni di Python - 5.5 Lo slicing delle liste

Lo slicing delle liste

Abbiamo visto come ottenere un singolo elemento da una lista scrivendo il nome della lista e l’indice dell’elemento

nomelista[2]

Lo slicing è un modo più avanzato di ottenere più elementi contemporaneamente da una lista. Infatti se vogliamo ottenere gli elementi compresi tra due indici di una lista possiamo esprimere i due indici estremi separati da due punti : . Il valore corrispondente all’indice massimo non sarà incluso. Il valore restituito sarà una lista a sua volta (una sublist).

nomelista[indicemin:indicemax]

Vediamo un esempio

lista = [ 9,8,7,6,5,4,3,2,1]
print(lista[2:5])

eseguendo

>>>
[7, 6, 5]

Se omettiamo l’indice inferiore otterremo tutti gli elementi della lista compresi tra il primo elemento ed l’indice definito. Praticamente è come se il primo indice fosse 0.

lista = [ 9,8,7,6,5,4,3,2,1]
print(lista[0:5])
print(lista[:5])

eseguendo

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

Stessa cosa, se viene omesso l’indice superiore, otterremo tutti gli elementi della lista che partono dall’indice indicato fino all’ultimo elemento.

lista = [ 9,8,7,6,5,4,3,2,1]
print(lista[5:])

eseguendo

>>>
[4, 3, 2, 1]

Inoltre lo slicing prevede anche un eventuale terzo numero. Questo numero rappresenta lo step, cioè quanti elementi si devono escludere ogni elemento da prendere nel range indicato dai primi due indici.

lista = [ 9,8,7,6,5,4,3,2,1]
print(lista[1:6:2])

eseguendo

>>>
[8, 6, 4]

Infine lo slicing prevede anche l’uso di indici con valori negativi. Questi indici (come abbiamo visto) partono dall’elemento finale.

lista = [ 9,8,7,6,5,4,3,2,1]
print(lista[2:-2])

eseguendo

>>>
[7, 6, 5, 4, 3]

Se il valore negativo viene invece utilizzato per il terzo numero (lasciando gli altri due vuoti), questo restituirà la lista invertita nell’ordine. Se -1 avremo l’inversione della lista, se minore la lista sempre invertita ma solo gli elementi alternati (come step).

lista = [ 9,8,7,6,5,4,3,2,1]
print(lista[::-1])
print(lista[::-2])

eseguendo

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

⇐ Vai a Lezione 5.4 – Tuple

Vai a Lezione 5.6 – List comprehension 

Lascia un commento