Sono nuovo in Python e voglio sapere come posso scambiare due caratteri in una stringa. So che la stringa è immutabile, quindi ho bisogno di trovare un modo per creare una nuova stringa con i caratteri scambiati. In particolare, un metodo generale che prende una stringa e due indici i, j e scambia il carattere su i con j.Scambia caratteri nella stringa
6
A
risposta
12
Come si afferma correttamente, le stringhe sono immutabili e non possono essere modificate sul posto, ma è possibile creare una nuova stringa con i caratteri scambiati. Ecco un'idea: cerchiamo di convertire la stringa in una lista, scambiare gli elementi della lista e poi convertire la lista in una stringa:
def swap(s, i, j):
lst = list(s);
lst[i], lst[j] = lst[j], lst[i]
return ''.join(lst)
Un'altra possibile applicazione potrebbe essere quella di manipolare lo stringa utilizzando fette e indici:
def swap(s, i, j):
return ''.join((s[:i], s[j], s[i+1:j], s[i], s[j+1:]))
in entrambi i casi, funziona come previsto:
swap('abcde', 1, 3)
=> 'adcbe'
Grande, stavo pensando di un modo per farlo attraverso una lista. È efficiente in termini di tempo? perché devo metterlo in un programma di tempo critico. – Wajahat
@Wajahat È abbastanza buono. Preferisco la prima opzione in quanto crea stringhe meno intermedie, ma come al solito è meglio se prima profiliamo il codice prima di tentare di ottimizzarlo prematuramente. –
Solo una nota per chiunque stia cercando di usare questo codice, il secondo modo in cui viene fatto con fette e indici non funziona correttamente con gli indici negativi in python3. Consiglierei di usare il primo metodo. – Mason