J'essaye de convertir une liste de chaînes qui sont des nombres en une liste d'entiers. Mon objectif est de passer de ceci: ['3.14', '3.212', '3.248', '3.16'] à quelque chose comme ceci: [3.14, 3.212, 3.248, 3.16].
J'ai essayé d'utiliser un for boucle pour convertir chaque élément individuel de la liste en un int en utilisant la fonction de base int () mais je continue à obtenir une ValueError
ValueError: invalid literal for int() with base 10: '3.14'
Voici ce que j'attends: p>
[3.14, 3.212, 3.248, 3.16]
mais voici l'erreur que j'obtiens:
pi_values = [] pi_vals = ['3.14', '3.212', '3.248', '3.16'] for k in pi_vals: j = int(k) pi_values.append(j) print(pi_values)
Comment puis-je résoudre ce problème? La plupart des sources en ligne que j'ai consultées ont directement suggéré de le convertir en utilisant la fonction int ().
4 Réponses :
Typographie en float.
j = float(k)
int
ne concerne que les nombres tels que -3, -2, -1, 0, 1, 2, 3, ...
Pour les fractions, vous devez utiliser float
:
[3.14, 3.212, 3.248, 3.16]
Ou en bref:
pi_vals = ['3.14', '3.212', '3.248', '3.16'] [float(val) for val in pi_vals]
Sortie: p >
pi_values = [] pi_vals = ['3.14', '3.212', '3.248', '3.16'] for k in pi_vals: j = float(k) pi_values.append(j) print(pi_values)
Voici la solution. Au lieu de int
, utilisez float
pi_values = [] pi_vals = ['3.14', '3.212', '3.248', '3.16'] for k in pi_vals: j = float(k) pi_values.append(j) print(pi_values)
float_strings = ['3.14', '2.4663'] floats = [float(number) for number in float_strings]
Merci pour cet extrait de code, qui pourrait fournir une aide limitée et immédiate. Une explication appropriée améliorerait considérablement sa valeur à long terme en montrant pourquoi c'est une bonne solution au problème et le rendre plus utile aux futurs lecteurs avec d'autres questions similaires. Veuillez modifier votre réponse pour ajouter des explications, y compris les hypothèses que vous avez formulées.
Ce n'est pas
int
, c'estfloat
. Alors, utilisezj = float (k)
. Je vous recommande vivement de lire les docs .