Seguici su Telegram, ne vale la pena ❤️ ➡ @trovalost
Vai al contenuto

Operatore di slicing in Python

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) )

👇 Da non perdere 👇



Questo portale web esiste da 4469 giorni (12 anni), e contiene ad oggi 7504 articoli (circa 6.003.200 parole in tutto) e 14 servizi online gratuiti. – Leggi un altro articolo a caso
Non ha ancora votato nessuno.

Ti sembra utile o interessante? Vota e fammelo sapere.

Questo sito contribuisce alla audience di sè stesso.
Il nostro network informativo: Lipercubo.it - Pagare.online - Trovalost.it.