Tengo un script que lee un archivo de texto, extrae números decimales como cadenas y los coloca en una lista.
Así que tengo esta lista:
my_list = ['0.49', '0.54', '0.54', '0.55', '0.55', '0.54', '0.55', '0.55', '0.54']
¿Cómo convierto cada uno de los valores en la lista de una cadena a un flotante?
Yo he tratado:
for item in my_list:
float(item)
Pero esto no parece funcionar para mí.
[float(i) for i in lst]
para ser precisos, crea una nueva lista con valores flotantes. A diferencia del map
enfoque funcionará en py3k.
-
Para matrices grandes, recomendaría usar numpy:
np.array(inp_list, dtype=np.float32)
. Ni siquiera tiene que especificar si es un flotador y simplemente usar:np.array(inp_list)
– Thomas Devoogdt
23 mayo 2018 a las 13:40
-
@Thomas Devoogdt: creo que necesita especificar el tipo; de lo contrario, obtendrá una gran variedad de cadenas
– seb007
2 de julio de 2019 a las 9:28
-
Tenga en cuenta que debe asignar
[float(i) for i in lst]
a algo. P.ej:new_list = [float(i) for i in lst]
– FaizFizy
24 de octubre de 2019 a las 2:27
-
¿Por qué Python no tiene una función profesional para realizar esta operación?
– usuario2585501
7 de octubre de 2021 a las 0:17
Tim Pietzcker
map(float, mylist)
Deberías hacerlo.
(En Python 3, el mapa deja de devolver un objeto de lista, por lo que si desea una nueva lista y no solo algo para iterar, necesita list(map(float, mylist)
– o use la respuesta de SilentGhost, que podría decirse que es más pitónica).
-
Esto es, de hecho, un diseño subóptimo en Python 3.
– xuacong84
6 de noviembre de 2019 a las 7:28
Amin Kiany
Este sería otro método (¡sin usar ningún bucle!):
import numpy as np
list(np.float_(list_name))
-
No es necesario volver a incluir el np.array en la lista si desea mantenerlo como un np.array =)
– alvas
19 de junio de 2018 a las 1:49
Denis Otkidach
float(item)
hacer lo correcto: convierte su argumento en flotante y lo devuelve, pero no cambia el argumento en el lugar. Una solución simple para su código es:
new_list = []
for item in list:
new_list.append(float(item))
El mismo código puede escribirse más corto usando la comprensión de listas: new_list = [float(i) for i in list]
Para cambiar la lista en el lugar:
for index, item in enumerate(list):
list[index] = float(item)
Por cierto, evita usar list
para sus variables, ya que enmascara la función integrada con el mismo nombre.
Alireza
incluso puedes hacer esto por numpy
import numpy as np
np.array(your_list,dtype=float)
esta matriz de retorno np de su lista como flotante
también puede establecer ‘dtype’ como int
-
Pero luego está devolviendo una matriz numpy, no una lista.
– usuario650261
24 de junio de 2019 a las 19:42
el procrastinador
Puedes usar el map()
función para convertir la lista directamente a floats
:
float_list = map(float, list)
-
Pero luego está devolviendo una matriz numpy, no una lista.
– usuario650261
24 de junio de 2019 a las 19:42
bfree67
Puede usar numpy para convertir una lista directamente en una matriz o matriz flotante.
import numpy as np
list_ex = [1, 0] # This a list
list_int = np.array(list_ex) # This is a numpy integer array
Si desea convertir la matriz de enteros en una matriz flotante, agréguele 0.
list_float = np.array(list_ex) + 0. # This is a numpy floating array
No utilice lista como nombre de variable.
–Tim Pietzcker
23 de octubre de 2009 a las 15:39
Para profundizar en el comentario anterior: usando
list
como un nombre de variable sombreará el incorporadolist
constructor, por lo tanto, no le permite usarlo en el mismo ámbito– Lasse Halberg Adiós
25 de junio de 2019 a las 16:05