L’operatore di slicing presentano una sintassi abbastanza intuita e permette, in sostanza, di operare su stringhe e sottostringhe Python nei modi più diversi. Se state cercando un metodo per generare sottostringhe, inversioni di stringhe, restituire un sottoinsieme di caratteri arbitrario, siete nel posto giusto. Piccolo bonus con un curioso algoritmo che permetterà di verificare se due stringhe siano anagrammi o no.
Vediamo subito un po’ di esempio dell’operatore di slicing.
Sottostringa iniziale
b = "Ciao, mondo!"
print(b[:4])
#output: Ciao
Sottostringa finale
b = "Ciao, mondo!"
print(b[6:])
#output: mondo!
Sottostringhe in una certa posizione
Quando si fa uso della sintassi coi :, bisogna ricordare che gli indici sono in base 0, quindi la prima lettera sarà b[0].
b = "Ciao, mondo!"
print(b[0])
print(b[4:5])
#output: C
#output: ,
Stringa al contrario in Python (esempio)
Proviamo adesso a capire come usare l’operatore : di slicing per scrivere una stringa al contrario, ovvero invertire l’ordine dei caratteri:
def inverti(x): return x[::-1] input_string = "I topi non avevano nipoti" reversed_string = inverti(input_string) print("Stringa originale: ", input_string) print("Stringa invertita: ", reversed_string)
L’algoritmo utilizza l’operatore di slicing, in questo caso, con un passo di -1 per invertire la stringa. Il risultato viene restituito dalla funzione inverti, per come l’abbiamo definita.
Stringa originale: I topi non avevano nipoti Stringa invertita: itopin onaveva non ipot I
Verificare se due stringhe sono anagrammi
Concludiamo con la verifica che due stringhe siano anagrammi, sfruttando la funzione sorted di Python. Il problema deve essere correttamente inquadrato, in quanto si tratta di un problema di decisione e non di generazione: non voglio generare degli algoritmi sulla base di una stringa data, bensì desidero scegliere io le stringhe e verificare rapidamente se lo siano o meno. La generazione di anagrammi è molto più complessa ed è soprattutto un problema molto diverso da quello che mostriamo qui.
Dicevamo, la funzione sorted(): tale funzione serve essenzialmente ad ordinare una qualsiasi tupla:
a = ("b", "g", "a", "d", "f", "c", "h", "e")
x = sorted(a)
print(x)
che metterà dentro x la versione ordinata delle tuple contenute nella variabile a. Per inciso, il tutto può funzionare anche su un array:
a = ["h", "b", "a", "c", "f", "d", "e", "g"]
x = sorted(a)
print(x)
# output: ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h']
eventualmente pure ordinandolo al contrario, passando il parametro reverse=True.
a = ["h", "b", "a", "c", "f", "d", "e", "g"]
x = sorted(a, reverse=True)
print(x)
#output: ['h', 'g', 'f', 'e', 'd', 'c', 'b', 'a']
Un uso creativo della funzione sorted servirà quindi a verificare che due stringhe siano anagrammi: se sono anagrammi, infatti, presentano le stesse lettere in ordine diverso, quindi le due stringhe con i caratteri ordinati saranno identiche. Un esempio viene riportato di seguito.
def is_anagram(s1, s2): if sorted(s1) == sorted(s2): print("Sono anagrammi.") else: print("Non sono anagrammi.") s1 ="mario rossi" s2 ="orso rimasi" print ( is_anagram(s1, s2) )
👇 Contenuti da non perdere 👇
- Domini Internet 🌍
- Informatica 🖥
- Internet 💻
- Mondo Apple 🍎
- monitoraggio servizi online 📈
- Programmare 🖥
- Sicurezza & Privacy 👁
- 💬 Il nostro canale Telegram: iscriviti
- 🔴 Test di logica interattivo
- 🔵 Il Virtual Advertising è il futuro della pubblicità
- 🔵 Che significa acrimonia