Cómo convertir una lista de cadenas en una lista de números en coma flotante (flotantes) en Python

La forma más pitónica de convertir una lista de cadenas en una lista de flotantes es usar una comprensión de listas floats = [float(x) for x in strings]. Recorre todos los elementos de la lista y convierte cada elemento de la lista x en un flotante utilizando la función incorporada float(x).

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

Problema: dada una lista de cadenas ["1", "2.0", "-3.4"]. ¿Cómo convertirla en una lista de flotantes [1.0, 2.0, -3.4]?

Método 1: Comprensión de listas

Supongamos que tenemos una lista:

a = ["1", "2.0", "-3.4"]

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

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

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

print([float(x) for x in a])
# [1.0, 2.0, -3.4]

? 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 .

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

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

La función incorporada float() convierte una cadena en un flotante. Por lo tanto, nos ayuda a crear una nueva lista de flotantes a partir de la lista de cadenas 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 = ["1", "2.0", "-3.4"]
print(list(map(float, a)))
# [1.0, 2.0, -3.4]

? La función map() aplica el primer argumento, una función, a cada elemento de un iterable. Transforma cada elemento del iterable original en un nuevo elemento y devuelve un nuevo objeto iterable map con los valores transformados. Para obtener una lista, debemos convertirlo utilizando el constructor list() incorporado.

Método 3: Bucle for

Por supuesto, también puedes convertir una lista de cadenas en una lista de flotantes 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 = ["1", "2.0", "-3.4"]
floats = []

for element in a:
    floats.append(float(element))

print(floats)
# [1.0, 2.0, -3.4]

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

  • Crear una lista vacía con floats = [].
  • Iterar sobre cada elemento de cadena usando un bucle for como for element in list.
  • Convertir la cadena en un flotante usando float(element) y anexarlo a la nueva lista de flotantes usando el método list.append() .

Método 4: Comprensión de listas + eval()

También puedes utilizar la función eval() en una comprensión de listas para convertir una lista de cadenas en una lista de flotantes:

a = ["1.0", "2.0", "-3.4"]
floats = [eval(x) for x in a]
print(floats)
# [1.0, 2.0, -3.4]

? La función incorporada de Python eval(s) parsea el argumento de cadena s en una expresión de Python, lo ejecuta, y devuelve el resultado de la expresión.Si la “expresión” es una representación simple de un flotante, Python convierte el argumento s en un flotante.

Pero ten en cuenta que si tienes una lista de cadenas mixtas con representaciones de números enteros y flotantes, tu lista resultante también contendrá tipos de datos mixtos:

a = ["1", "2.0", "-3.4"]
floats = [eval(x) for x in a]
print(floats)
# [1, 2.0, -3.4]

Puedes verme presentando los entresijos de la función eval() 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 gratuita con una gran cantidad de contenido gratuito y hojas de trucos, ¡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!