No solo es la forma preferida, es la única manera razonable. Dado que las cadenas son inmutables, para "eliminar" un carácter de una cadena, debe crear una nueva cadena siempre que desee un valor de cadena diferente.
Quizás se esté preguntando por qué las cadenas son inmutables, dado que tiene que crear una cadena completamente nueva cada vez que cambia un carácter. Después de todo, las cadenas C son solo matrices de caracteres y, por lo tanto, son mutables, y algunos lenguajes que admiten cadenas más limpiamente que C también permiten cadenas mutables. Hay dos razones para tener cadenas inmutables: seguridad/seguridad y rendimiento.
La seguridad es probablemente la razón más importante para que las cadenas sean inmutables. Cuando las cadenas son inmutables, no puede pasar una cadena a una biblioteca y luego hacer que esa cadena cambie debajo de sus pies cuando no lo espera. Puede preguntarse qué biblioteca cambiaría los parámetros de cadena, pero si envía código a los clientes no puede controlar sus versiones de la biblioteca estándar, y los clientes malintencionados pueden cambiar sus bibliotecas estándar para romper su programa y obtener más información. acerca de sus partes internas. Los objetos inmutables también son más fáciles de razonar, lo cual es realmente importante cuando intenta probar que su sistema está protegido contra amenazas particulares. Esta facilidad de razonamiento es especialmente importante para la seguridad del hilo, ya que los objetos inmutables son automáticamente seguros para la rosca.
El rendimiento sorprendentemente a menudo es mejor para cadenas inmutables. Cada vez que toma una porción de una cadena, el tiempo de ejecución de Python solo coloca una vista sobre la cadena original, por lo que no hay una nueva asignación de cadena. Como las cadenas son inmutables, obtienes semántica de copia sin copiar en realidad, lo que es una ganancia de rendimiento real.
Eric Lippert explica más sobre la lógica detrás de inmutable de cadenas (en C#, no en Python) here.
Intenté agregar , no sé por qué no funcionó. –
Realmente depende de lo que estés tratando de hacer y lo importante que es optimizar el código. Creo que en la mayoría de los casos solo se prefiere devolver una nueva cadena, en lugar de crear otro tipo o usar una lista. – dave
Si tiene que hacer esto con frecuencia, vuelva a pensar su algoritmo. – delnan