2010-10-23 4 views
32

Je suis assez novice en matière de programmation, j'espère que cette question est assez simple.Conversion de séries de chaînes en liste flottante en python

J'ai besoin de savoir comment convertir une entrée de chaîne de nombres séparés par des espaces sur une seule ligne:

5.2 5.6 5.3 

et convertir en une liste flottante

lsit = [5.2,5.6,5.3] 

Comment cela peut-il être fait ?

+4

Votre variable s'appelle-t-elle vraiment 'lsit' ou est-ce une faute de frappe dans la question? Et si ça devait être 'list' alors je devrais ajouter que vous ne devriez pas utiliser' list' comme nom de variable car il cache un built-in avec le même nom. –

Répondre

60

Essayez une compréhension de la liste:

s = '5.2 5.6 5.3' 
floats = [float(x) for x in s.split()] 

En Python 2.x, il peut également être fait sur la carte:

floats = map(float, s.split()) 

Notez que dans Python 3.x la deuxième version retourne un objet carte plutôt qu'une liste. Si vous avez besoin d'une liste, vous pouvez la convertir en une liste avec un appel à list, ou simplement utiliser l'approche de la liste de compréhension à la place.

+2

Je voulais juste ajouter que Decimal pourrait être un meilleur candidat pour traiter les points flottants. http://docs.python.org/library/decimal.html – dcolish

+0

Je reçois l'erreur "impossible de convertir la chaîne en float" lorsque vous essayez d'utiliser ce code –

Questions connexes