2014-09-21 74 views
6

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

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' 
+0

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

+0

@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. –

+0

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

Problemi correlati