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

Rate this post

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!