Vai al contenuto
eLearner.app
Modulo 4 · Lezione 2 di 414/36 nel corso~10 min
Lezioni del modulo (2/4)

Slicing e indicizzazione

In Python le stringhe sono sequenze di caratteri: puoi accedere ai singoli caratteri per indice e ritagliare sottostringhe con la sintassi slice [start:stop:step] — esattamente come con le liste.

Indici positivi e negativi

Python
s = "Python"
#    0123456
#   -6-5-4-3-2-1
s[0]    # 'P'
s[5]    # 'n'
s[-1]   # 'n'   (ultimo)
s[-2]   # 'o'   (penultimo)

L'accesso fuori range solleva IndexError.

Slicing [start:stop:step]

Python
s = "Python"
s[0:3]    # 'Pyt'      indici 0,1,2 (stop ESCLUSO)
s[2:]     # 'thon'     dal 2 alla fine
s[:3]     # 'Pyt'      dall'inizio fino al 3 (escluso)
s[:]      # 'Python'   copia completa
s[-3:]    # 'hon'      ultimi 3
s[:-2]    # 'Pyth'     tutto tranne gli ultimi 2

A differenza dell'indicizzazione, lo slicing NON solleva errori se gli indici sono fuori range: ritaglia quello che può.

Il terzo argomento: step

Python
s = "Python"
s[::2]    # 'Pto'    salta uno sì uno no
s[1::2]   # 'yhn'    dispari
s[::-1]   # 'nohtyP' INVERSIONE (idiom famoso)

s[::-1] è il modo idiomatico per invertire una stringa.

Lunghezza e contenimento

Python
len("Python")        # 6
"th" in "Python"     # True
"java" in "Python"   # False

Indici negativi e step nello slicing

La sintassi completa dello slicing è s[start:stop:step]. Se ometti start e stop, ma imposti uno step negativo pari a -1 (s[::-1]), ottieni la stringa invertita al contrario. L'indice negativo -1 rappresenta sempre l'ultimo carattere della stringa, -2 il penultimo, ecc.

Prova tu

Esercizio#python.m4.l2.e1
Tentativi: 0Caricamento…

Data `word = 'PROGRAMMAZIONE'`, ottieni la sua inversione in `reversed_word`. Valuta `reversed_word`.

Caricamento editor…
Mostra suggerimento

word[::-1]

Soluzione disponibile dopo 3 tentativi

Esercizio di ripasso

Esercizio#python.m4.l2.e2
Tentativi: 0Caricamento…

Data `email = 'ada@example.com'`, estrai il dominio (tutto dopo la '@') in `domain` usando lo slicing dopo aver trovato l'indice con .find. Valuta `domain`.

Caricamento editor…
Mostra suggerimento

email[email.find('@') + 1:]

Soluzione disponibile dopo 3 tentativi

Sfida aggiuntiva

Esercizio#python.m4.l2.e3
Tentativi: 0Caricamento…

Data la stringa `word = "pythonista"`, usa lo slicing per estrarre i primi 3 caratteri e gli ultimi 3 caratteri, e uniscili insieme in una nuova stringa `short_word`. Valuta infine `short_word` (dovrebbe risultare `'pytsta'`).

Caricamento editor…
Mostra suggerimento

I primi 3 caratteri sono word[:3], gli ultimi 3 sono word[-3:]. Somma le due fette.

Soluzione disponibile dopo 3 tentativi