Cómo convertir una lista de enteros en una lista de cadenas en Python

English version of article (English): https://blog.finxter.com/how-to-convert-an-integer-list-to-a-string-list-in-python/

La forma más pitónica de convertir una lista de enteros ints en una lista de cadenas es usar el código de una línea strings = [str(x) for x in ints]. Recorre todos los elementos de la lista ints y convierte cada elemento de la lista x en una cadena utilizando el constructor str(x).

Este artículo muestra las formas más sencillas de convertir una lista unidimensional que consta solo de enteros en una lista de cadenas.

Problema: dada una lista de números enteros [1, 2, 3]. ¿Cómo convertirlo en una lista de cadenas ["1", "2", "3"]?

Método 1: Comprensión de listas

Supongamos que tenemos una lista:

a = [4, 3, 2, 1, 10, 14, -14]

Ahora, comprobamos el tipo del primer elemento de la lista:

print(type(a[0]))
# <class 'int'>

Aplicamos la función incorporada str() y obtenemos una lista de cadenas mediante comprensión de listas:

print([str(x) for x in a])
# ['4', '3', '2', '1', '10', '14', '-14']

? 💡 La comprensión de listas es una forma compacta de crear listas. La fórmula simple es [expresión + contexto]. Expresión: ¿Qué hacer con cada elemento de la lista? Contexto: ¿Qué elementos seleccionar? El contexto consta de un número arbitrario de declaraciones for e if.

Puedes verme explicar la comprensión de listas en este vídeo:

Comprobamos el tipo de los números en la nueva lista:

A = [str(x) for x in a]
print(type(A[0]))
# <class 'str'>

La función incorporada str convierte un entero en una representación de cadena de ese entero. Por lo tanto, nos ayuda a crear una nueva lista de cadenas de la lista de enteros en una sola línea de código.

Método 2: Función map

La función incorporada map está bien optimizada y es eficiente; cuando se llama, los elementos de la lista se recuperan en el momento de acceder. Por lo tanto, sólo un elemento se almacena y procesa en la memoria, lo que permite que el programa no almacene la lista completa de elementos en la memoria del sistema.

Aplicamos a la misma lista a el siguiente código:

a = [4, 3, 2, 1, 10, 14, -14]
print(list(map(str, a)))
# ['4', '3', '2', '1', '10', '14', '-14']

La función map() devuelve un objeto iterable map que necesitamos convertir en una lista usando el constructor incorporado list() .

Método 3: Bucle for

Por supuesto, también puedes convertir una lista de enteros en una lista de cadenas usando un simple bucle for. Esto es lo que haría la mayoría de la gente que viene de un lenguaje de programación como Java y C++, ya que aún no conocen la forma más pitónica utilizando comprensión de listas (ver el Método 1).

a = [4, 3, 2, 1, 10, 14, -14]
strings = []

for element in a:
    strings.append(str(element))

print(strings)
# ['4', '3', '2', '1', '10', '14', '-14']

Este método básico para convertir una lista de enteros en una lista de cadenas consta de tres pasos:

  • Crear una lista vacía con strings = [].
  • Iterar sobre cada elemento entero usando un bucle for como for element in list.
  • Convertir el entero en una cadena usando str(element) y añadirlo a la nueva lista de cadenas usando el método list.append() .

Método 4: Formateo de cadenas para la conversión personalizada de cadenas

Si esto no te basta, por ejemplo, necesitas un formato específico para las cadenas convertidas, como sólo dos dígitos después del punto decimal, deberías echar un vistazo a las potentes capacidades de formateo de cadenas de Python.

Por ejemplo, para convertir una lista de enteros en una lista de cadenas con solo dos dígitos, usa el método string.format():

a = [4, 3, 2, 1, 10, 14, -14]
strings = ['{:.2f}'.format(x) for x in a]
print(strings)
# ['4.00', '3.00', '2.00', '1.00', '10.00', '14.00', '-14.00']

? La función incorporada de Python format(valor, especificación) transforma un formato de entrada en uno de salida definido por ti. En concreto, aplica la especificación de formato al valor del argumento y devuelve una representación formateada del valor. Por ejemplo, format(42, 'f') devuelve la representación de cadena '42 .000000'.

Puedes verme presentando las capacidades de formateo en esta breve guía:

Para mejorar tus habilidades de Python de la manera más sencilla, siéntete libre de unirte a mi academia de correo electrónico sin coste con una gran cantidad de contenido gratuito y chuletas, ¡si aún no lo has hecho! 🙂Si quieres ir a por todas y aprender Python mientras te pagan durante el proceso, echa un vistazo a mi Curso de Freelancer en Python — ¡la formación número uno del mundo para desarrolladores autónomos!