Python >> Tutoriel Python >  >> Python

Comment convertir une liste d'entiers en liste flottante en Python

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

Cet article vous montre les moyens les plus simples de convertir une liste unidimensionnelle composée uniquement de int en une liste de float .

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

Les méthodes ne sont pas applicables aux listes de listes, elles contiennent des erreurs d'arrondi qui sont différentes dans chaque méthode. Si nécessaire, vous pouvez ajouter des cycles ou définir des fonctions personnalisées.

Méthode 1 :Compréhension de la liste

Supposons que nous ayons une liste :

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

Maintenant, vérifiez le type des numéros de liste :

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

Appliquons la fonction intégrée float , et obtenez une liste de flottants :

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’>

Ainsi, en utilisant la fonction float intégrée, nous pouvons obtenir une nouvelle liste de flottants dans une ligne de code.

Méthode 2 :Fonction de carte

La fonction intégrée map 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. Par conséquent, un élément est stocké et traité en mémoire, ce qui permet au programme de ne pas stocker la liste complète des éléments dans la mémoire système.

Appliquer à la même liste a le code suivant :

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, car lors de l'appel de la fonction 'map', nous avons passé en argument la fonction 'float' déjà décrite dans la méthode 1, et avons enveloppé le résultat dans une liste à l'aide de la fonction 'list ' fonction.

Méthode 3 :Énumérer la fonction

À l'aide de la fonction intégrée "énumérer", nous pouvons parcourir les éléments de la liste et traiter non seulement la valeur de l'élément, mais également 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

Voici un aperçu de la conversion d'une liste d'un 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 de grandes quantités 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 tableau :

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

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

Vérifiez le type des éléments :

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

Contrairement au type de nombres "float" en Python, le module numpy les définit légèrement différemment et est divisé 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, dans lequel 1 bit est affecté au signe, 11 bits pour l'exposant et 52 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.