Python >> Tutoriel Python >  >> Python

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

La façon la plus Pythonique de convertir une liste de flottants fs à une liste d'entiers consiste à utiliser la ligne fs = [int(x) for x in fs] . 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 liste x en une valeur entière en utilisant le int(x) constructeur.

Cet article vous montre les moyens les plus simples de convertir une liste unidimensionnelle composée uniquement de flottants en une liste d'entiers .

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

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 pour vérifier, comptabiliser et minimiser les erreurs.

Méthode 1 :Compréhension de la liste

Supposons que nous ayons une liste :

a = [1.1, 1.2, 1.8, 0.5, 5.9, -2.3]

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

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

Appliquons la fonction intégrée int , et obtenez une liste d'entiers :

print([int(a) for a in a])
# [1, 1, 1, 0, 5, -2]

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

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

Ainsi, en utilisant la fonction intégrée int , qui convertit un nombre réel en arrondissant vers zéro, ou plutôt, il supprime la partie fractionnaire, nous pouvons obtenir une nouvelle liste d'entiers avec un code à une ligne.

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(int, a)))
# [1, 1, 1, 0, 5, -2]

Cela n'a aucun sens de vérifier le type des éléments de la liste résultante puisque lorsque nous avons appelé la fonction map, nous avons passé la fonction int déjà décrite dans la méthode 1 en argument et enveloppé le résultat dans une liste en utilisant le list fonction.

La qualité de cette transformation de la liste, ou plutôt l'erreur d'arrondi, est la même que dans la première méthode.

Méthode 3 :Compréhension de la ronde et de la liste

Il est très similaire au premier, mais contrairement à int , il ne se contente pas de supprimer la partie fractionnaire, mais arrondit à l'entier pair le plus proche si la partie fractionnaire est 0,5. Vous pouvez aussi passer en second argument le nombre de décimales auxquelles l'arrondi est demandé, par défaut c'est 0, c'est ce que nous allons utiliser :

print([round(a) for a in a])

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

D = [round(a) for a in a]
print(type(D[0]))
# <class ‘int’>

Comme vous pouvez le voir sur cet exemple, il existe différentes fonctions intégrées pour atteindre notre objectif, la différence réside dans la méthode et l'ampleur de l'erreur d'arrondi.

Méthode 4 :Module de mathématiques

De cette façon, je suggère d'utiliser le module importé math , dans lequel nous utiliserons les trois fonctions ceil() , floor() , et trunc() . regardons de plus près chacun. Ils ont la même syntaxe, la différence est dans la manière d'arrondir.

Appliquons à la liste d'origine :

a = [1.1, 1.2, 1.8, 0.5, 5.9, -2.3]
print([math.ceil(a) for a in a])
# [2, 2, 2, 1, 6, -2]

‘Ceil’ arrondit au plus grand entier suivant, en respectant le signe (-2.3 <-2 qui est Vrai ).

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

C = [math.ceil(a) for a in a]
print(type(C[0]))
# <class ‘int’>

Considérez la fonction suivante dans le module "maths" - "floor", qui est l'opposé de "ceil" - arrondi à l'entier le plus proche :

print([math.floor(a) for a in a])
# [1, 1, 1, 0, 5, -3]

Vérifiez le type :

F = [math.floor(a) for a in a]
print(type(F[0]))
# <class ‘int’>

La fonction suivante, trunc() , est analogue à la fonction intégrée int() — il supprime simplement la partie fractionnaire quelle qu'elle soit :

print([math.trunc(a) for a in a])
# [1, 1, 1, 0, 5, -2]

Et vérifiez le type :

T = [math.trunc(a) for a in a]
print(type(T[0]))
# <class ‘int’>

Méthode 5 :NumPy

Voici un aperçu de la conversion d'une liste à partir d'un int à 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.

Tournons notre première liste a dans un tableau :

import numpy as np
N = np.array(a, int)

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

# [ 1  1  1  0  5 -2]

Vérifiez le type des éléments :

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

Contrairement au int type de nombre en Python, le module NumPy les définit légèrement différemment et est divisé en plusieurs sous-groupes. Par exemple, 'int32' sont des nombres entiers allant de -2147483648 à 2147483647 (nombres de 4 octets), 'int64' sont des nombres de -9223372036854775808 à 9223372036854775807 (nombres de 8 octets), il existe également différents types de 'int' pour les systèmes d'exploitation 32 et 64 bits, cela doit être pris en compte lors du calcul avec des tableaux.

Plus de didacticiels Finxter

L'apprentissage est un processus continu et il serait sage de ne jamais cesser d'apprendre et de s'améliorer tout au long de votre vie. 👑

Qu'apprendre ? Votre subconscient sait souvent mieux que votre esprit conscient les compétences dont vous avez besoin pour atteindre le prochain niveau de réussite .

Je vous recommande de lire au moins un tutoriel par jour (seulement 5 minutes par tutoriel suffisent) pour être sûr de ne jamais arrêter d'apprendre !

💡 Si vous voulez vous assurer de ne pas oublier votre habitude, n'hésitez pas à rejoindre notre académie de messagerie gratuite pour des tutoriels hebdomadaires et des rappels d'apprentissage dans votre INBOX.

De plus, parcourez la liste suivante de didacticiels et ouvrez-en 3 intéressants dans un nouvel onglet de navigateur pour commencer votre nouvelle habitude d'apprentissage - ou continuer avec votre existante - aujourd'hui ! 🚀

Bases de Python :

  • Python une ligne pour la boucle
  • Importer des modules depuis un autre dossier
  • Déterminer le type d'objet Python
  • Convertir la liste de chaînes en liste Int
  • Convertir la liste Int en liste de chaînes
  • Convertir une liste de chaînes en liste flottante
  • Convertir la liste en tableau NumPy
  • Ajouter des données au fichier JSON
  • Liste de filtres Python
  • Liste imbriquée

Gestion des dépendances Python :

  • Installer PIP
  • Comment vérifier votre version de Python
  • Vérifier la version de Pandas dans le script
  • Vérifier la version Python Jupyter
  • Vérifier la version du package PIP

Débogage Python :

  • Capturer et imprimer les exceptions
  • Répertorier l'index hors limites
  • Correction de la vérité sur l'erreur de valeur
  • Impossible d'importer le nom X Erreur

Choses amusantes :

  • 5 aide-mémoire que chaque codeur Python doit posséder
  • 10 meilleurs puzzles Python pour découvrir votre véritable niveau de compétence
  • Comment gagner 1 000 $ de côté en tant que pigiste Python

Merci d'avoir appris avec Finxter !


Prochain article