Python >> Tutoriel Python >  >> Python

Comment convertir une liste d'entiers en une liste de nombres à virgule flottante en Python

La façon la plus pythonique de convertir une liste d'entiers fs en une liste de nombres à virgule flottante consiste à utiliser la ligne fs =[float (x) for x in fs]. Il itère sur tous les éléments de la liste fs à l'aide d'une compréhension de liste et convertit chaque élément de liste x en une valeur entière à l'aide du constructeur float(x).

Cet article montre les moyens les plus simples de convertir une liste unidimensionnelle d'entiers uniquement en une liste à virgule flottante .

Problème :Soit une liste d'entiers [1, 2, 3] . Comment le convertir en une liste de nombres à virgule flottante [1.0, 2.0, 3.0] ?

Les méthodes ne sont pas applicables aux listes de listes. Vous pouvez ajouter des boucles ou définir des fonctions définies par l'utilisateur selon vos besoins.

Méthode 1 :Liste

Supposons que nous ayons une liste :

a = [1, 3, 2, 1, 5, -2]

Vérifions le type des éléments de la liste :

print(type(a[0]))
# <class 'int'>

Utilisons la fonction intégrée float, obtenir une liste de nombres à virgule flottante :

print([float(i) for i in a])
# [1.0, 3.0, 2.0, 1.0, 5.0, -2.0]

Vérifiez le type de numéros dans la nouvelle liste :

A = [float(i) for i in a]
print(type(A[0]))
# <class ‘float’>

Donc, en utilisant la fonction intégrée float , nous pouvons obtenir une nouvelle liste de nombres à virgule flottante sur une seule ligne.

Méthode 2 :fonction de carte

Fonction intégrée carte, est bien optimisé et efficace, lorsqu'il est appelé, les éléments de la liste sont récupérés lors de l'accès, et donc un élément est localisé et traité en mémoire, ce qui permet au programme de ne pas stocker toute la liste des éléments dans la mémoire système.

Appliquez le code ci-dessous à la même liste 'a' :

print(list(map(float, a)))
# [1.0, 3.0, 2.0, 1.0, 5.0, -2.0]

Nous ne vérifierons pas le type des éléments de la liste résultante, puisque lors de l'appel de la 'map' lui a passé la fonction déjà décrite dans la méthode 1 ‘float’ comme argument, et le résultat est enveloppé dans une liste à l'aide de la fonction 'list'.

Méthode 3 :la fonction d'énumération

En utilisant la fonction intégrée 'enumerate', nous pouvons itérer sur les éléments d'une liste et traiter non seulement la valeur de l'élément, mais aussi son numéro d'index dans la liste :

for i, item in enumerate(a):
   a[i] = float(item)
#[1.0, 3.0, 2.0, 1.0, 5.0, -2.0]

Méthode 4 :NumPy

Ici, nous allons envisager de convertir une liste de 'int' en un tableau à l'aide du module NumPy. La différence entre un tableau et une liste est que tous les éléments d'un tableau doivent être du même type, comme "float" et "int". Les opérations numériques avec une grande quantité de données peuvent être effectuées avec des tableaux beaucoup plus rapidement et plus efficacement qu'avec des listes.

Transformons notre première liste 'a' en un tableau :

import numpy as np
N = np.array(a, float)
#[1., 3., 2., 1., 5., -2.]

Nous passons deux arguments à la fonction de tableau, le nom de la liste à convertir en tableau et le type de chaque élément.

Vérifions le type des éléments :

print(type(N[0]))
#<class 'numpy.float64'>

Contrairement au type de nombre 'float' en Python, ils sont définis différemment dans le module NumPy et sont divisés en plusieurs sous-groupes. Par exemple, 'float64' est un type de données numérique numpy utilisé pour stocker des nombres réels à double précision, où 1 bit est alloué pour le signe, 11 bits pour l'exposant et 52 bits pour la mantisse, 'float32' contient 1 bit pour le signe, 8 bits pour l'exposant et 23 pour la mantisse, 'float16' - 1 bit pour le signe, 5 bits pour l'exposant et 10 pour la mantisse. Ceci doit être pris en compte lors du calcul avec des tableaux.


Post précédent