Inmutabilidad de las Cadenas
Desliza para mostrar el menú
En Python, las cadenas son inmutables: una vez creadas, los caracteres que contienen no pueden modificarse en su lugar. Cualquier "modificación" que realices en realidad crea una nueva cadena. Esto es importante tanto para la corrección (evitar ediciones accidentales en el lugar) como para el rendimiento (cómo se construyen cadenas más grandes).
Sin ediciones en el lugar
Puedes leer caracteres por índice, pero no puedes asignarles un valor.
123456s = "hello" t = "H" + s[1:] # Creates a new string: "Hello" print(t) s[0] = "H" # TypeError: strings don't support item assignment
La mayoría de los métodos de cadenas devuelven una nueva cadena y dejan la original sin cambios.
12345678# Cleaning up user input from a registration form user_name = " Alice " user_name.strip() # returns "Alice", but the variable still has spaces print(user_name) # " Alice " user_name = user_name.strip() # assign the cleaned value back print(user_name) # "Alice" → cleaned and ready to store
.strip(): elimina los espacios en blanco al principio y al final de una cadena.
Sintaxis: string.strip()
El encadenamiento está bien, pero recuerda que obtienes un nuevo objeto en cada paso.
123456# Normalizing a user's chat message before saving it user_message = " hello\n" clean_message = user_message.strip().upper() print(user_message) # original remains " hello\n" print(clean_message) # "HELLO" → cleaned and ready for processing
.upper(): Devuelve una copia de la cadena con todos los caracteres en mayúsculas.
Sintaxis: string.upper()
"Modificar" creando una nueva cadena
Uso de slicing, replace o concatenación para producir un nuevo valor.
1234567s = "data" s = s.replace("t", "T") # "daTa" print(s) s = s[:1] + "A" + s[2:] # "dATa" print(s)
.replace(): devuelve una copia de la cadena con todas las apariciones de una subcadena reemplazadas por otra subcadena.
Sintaxis: string.replace(old, new)
Construcción eficiente
El uso repetido de + en bucles grandes puede ser lento (muchas cadenas intermedias). Un patrón común es recolectar fragmentos y unirlos una sola vez:
1234# Combining message parts received from a device response_parts = ["Status:", " ", "200", "\n", "Success"] response_message = "".join(response_parts) # "Status: 200\nSuccess" print(response_message)
.join(): concatena los elementos de un iterable (como una lista) en una sola cadena, separados por la cadena sobre la que se llama el método.
Sintaxis: separator.join([str, str, ...])
Aprenderás más sobre patrones de unión/formateo en el próximo capítulo.
1. ¿Qué línea intenta modificar una cadena en el lugar y generará un error?
2. ¿Qué mostrará el código como salida?
3. Necesitas ensamblar una cadena larga a partir de muchas piezas pequeñas. ¿Qué se recomienda?
¡Gracias por tus comentarios!
Pregunte a AI
Pregunte a AI
Pregunte lo que quiera o pruebe una de las preguntas sugeridas para comenzar nuestra charla
Inmutabilidad de las Cadenas
En Python, las cadenas son inmutables: una vez creadas, los caracteres que contienen no pueden modificarse en su lugar. Cualquier "modificación" que realices en realidad crea una nueva cadena. Esto es importante tanto para la corrección (evitar ediciones accidentales en el lugar) como para el rendimiento (cómo se construyen cadenas más grandes).
Sin ediciones en el lugar
Puedes leer caracteres por índice, pero no puedes asignarles un valor.
123456s = "hello" t = "H" + s[1:] # Creates a new string: "Hello" print(t) s[0] = "H" # TypeError: strings don't support item assignment
La mayoría de los métodos de cadenas devuelven una nueva cadena y dejan la original sin cambios.
12345678# Cleaning up user input from a registration form user_name = " Alice " user_name.strip() # returns "Alice", but the variable still has spaces print(user_name) # " Alice " user_name = user_name.strip() # assign the cleaned value back print(user_name) # "Alice" → cleaned and ready to store
.strip(): elimina los espacios en blanco al principio y al final de una cadena.
Sintaxis: string.strip()
El encadenamiento está bien, pero recuerda que obtienes un nuevo objeto en cada paso.
123456# Normalizing a user's chat message before saving it user_message = " hello\n" clean_message = user_message.strip().upper() print(user_message) # original remains " hello\n" print(clean_message) # "HELLO" → cleaned and ready for processing
.upper(): Devuelve una copia de la cadena con todos los caracteres en mayúsculas.
Sintaxis: string.upper()
"Modificar" creando una nueva cadena
Uso de slicing, replace o concatenación para producir un nuevo valor.
1234567s = "data" s = s.replace("t", "T") # "daTa" print(s) s = s[:1] + "A" + s[2:] # "dATa" print(s)
.replace(): devuelve una copia de la cadena con todas las apariciones de una subcadena reemplazadas por otra subcadena.
Sintaxis: string.replace(old, new)
Construcción eficiente
El uso repetido de + en bucles grandes puede ser lento (muchas cadenas intermedias). Un patrón común es recolectar fragmentos y unirlos una sola vez:
1234# Combining message parts received from a device response_parts = ["Status:", " ", "200", "\n", "Success"] response_message = "".join(response_parts) # "Status: 200\nSuccess" print(response_message)
.join(): concatena los elementos de un iterable (como una lista) en una sola cadena, separados por la cadena sobre la que se llama el método.
Sintaxis: separator.join([str, str, ...])
Aprenderás más sobre patrones de unión/formateo en el próximo capítulo.
¡Gracias por tus comentarios!