IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

retirer les nombres entiers d'une liste


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    53
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Juin 2008
    Messages : 53
    Par défaut retirer les nombres entiers d'une liste
    Bonjour à tous,

    Contexte :
    Je programme actuellement un script ayant pour but d'identifier des éléments précis dans un fichier CAO de type IGES. Dans ce type de fichier, chaque ligne définit une entité (une ligne, un cercle...) et pour reconnaitre les entités, je dois identifier leurs coordonnées. J'ai donc utilisé readline(), puis strip afin de la transformer en liste (ça marche très bioen jusque là mais après, je bloque).
    Mon problème : dans la liste, il y a des entiers (des caractéristiques des entités qui ne m'intéressent pas - couleur, style...) et les coordonnées X Y Z sous forme de réels (1542.1203, 45544.126, 1.205). Comment puis-je retirer de la liste tous les entiers et ne garder que les réels?

    Exemple :
    liste originale : ['128', '5', '1', '123.6067977', '723.4654977','1', '5', '1', '0', '0', '43.2137977', '3.601277', '223.1067977', '445.12377']
    liste "filtrée" : ['123.6067977', '723.4654977', '43.2137977', '3.601277', '223.1067977', '445.12377']

    J'espère être clair.
    Merci d'avance,

    Fred

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    76
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2008
    Messages : 76
    Par défaut
    Salut !

    Tu peux utiliser la fonction type qui renvoi le type d'un objet. Par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    liste = [128, 5, 1, 123.6067977, 723.4654977, 1, 5, 1, 0, 0, 43.2137977, 3.601277, 223.1067977, 445.12377]
    resultat = []
     
    for n in liste:
            # Si l'élément de la liste est un float, on l'ajoute à la liste résultat
    	if type(n) == type(1.0):
    		resultat.append(n)
     
    print resultat

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    53
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Juin 2008
    Messages : 53
    Par défaut
    Merci, ça marche nickel...
    Bonne journée,

    Fred

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    53
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Juin 2008
    Messages : 53
    Par défaut
    En fait, j'ai répondu un peu vite.
    Ça marche bien sur une liste de nombre mais en fait, du fait de l'utilisation de la fonction split, ma liste est une liste de chaine : ['128', '5', '1', '123.6067977', '723.4654977','1', '5', '1', '0', '0', '43.2137977', '3.601277', '223.1067977', '445.12377'] et non [128, 5, 1, 123.6067977, 723.4654977,1,5, 1, 0, 0, 43.2137977,3.601277, 223.1067977, 445.12377].
    Si je transforme les chaines en chiffre, alors je suis obligé de les affecter en int ou float et du coup, la détection du type ne marche plus...
    Je me trompe? Y a t il un moyen de transformer une liste de chaines en liste de nombre sans leur forcer un type?
    Merci d'avance,

    Fred

  5. #5
    Expert confirmé
    Avatar de Guigui_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2002
    Messages
    1 864
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2002
    Messages : 1 864
    Par défaut
    utilise eval
    Sinon, si tes chaînes de caractères sont des flotants, c'est qu'ils contiennent un ".", donc y'a juste à tester l'existence de ce "."

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    53
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Juin 2008
    Messages : 53
    Par défaut
    Guigui,

    Oui, j'y avais pensé mais je trouvai ça un peu lourdeau dans mon script... J'essaie le "eval".
    Merci,

    Fred

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 02/11/2008, 20h38
  2. Réponses: 7
    Dernier message: 24/04/2006, 15h48
  3. Réponses: 1
    Dernier message: 24/04/2006, 01h55
  4. recuperer le nombre element d'une liste deroulante
    Par fallered dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 19/10/2005, 14h11
  5. [FLASH MX] Choisir un nombre aléatoire dans une liste
    Par grenatdu55 dans le forum Flash
    Réponses: 4
    Dernier message: 23/04/2005, 21h09

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo