313 votes

En Python, comment puis-je convertir tous les éléments d'une liste en flottants ?

J'ai un script qui lit un fichier texte, en tire des nombres décimaux sous forme de chaînes et les place dans une liste.

Donc j'ai cette liste :

my_list = ['0.49', '0.54', '0.54', '0.55', '0.55', '0.54', '0.55', '0.55', '0.54']

Comment puis-je convertir chacune des valeurs de la liste d'une chaîne de caractères en un flottant ?

J'ai essayé :

for item in my_list:
    float(item)

Mais cela ne semble pas fonctionner pour moi.

556voto

SilentGhost Points 79627
[float(i) for i in lst]

pour être précis, il crée une nouvelle liste avec des valeurs flottantes. Contrairement à la map approche qui fonctionnera dans py3k.

155voto

Tim Pietzcker Points 146308

map(float, mylist) devrait le faire.

(En Python 3, map cesse de renvoyer un objet liste, donc si vous voulez une nouvelle liste et pas seulement quelque chose sur lequel itérer, vous devez soit list(map(float, mylist) - ou utiliser la réponse de SilentGhost qui est sans doute plus pythique).

29voto

Amin Kiany Points 419

Ce serait une autre méthode (sans utiliser de boucle !) :

import numpy as np
list(np.float_(list_name))

17voto

Denis Otkidach Points 13111

float(item) fait la bonne chose : il convertit son argument en float et le retourne, mais il ne change pas l'argument en place. Une correction simple pour votre code est :

new_list = []
for item in list:
    new_list.append(float(item))

Le même code peut être écrit plus court en utilisant la compréhension de liste : new_list = [float(i) for i in list]

Pour modifier la liste sur place :

for index, item in enumerate(list):
    list[index] = float(item)

Par ailleurs, évitez d'utiliser list pour vos variables, puisqu'il masque la fonction intégrée avec le même nom.

12voto

Alireza Points 706

Vous pouvez même le faire par numpy

import numpy as np
np.array(your_list,dtype=float)

ceci renvoie un tableau np de votre liste en float

vous pouvez aussi définir 'dtype' comme int

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X