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 :

Problème avec la fonction sorted


Sujet :

Python

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2012
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 26
    Points : 24
    Points
    24
    Par défaut Problème avec la fonction sorted
    Bonjour,
    Je voulais poser une question concernant le classement des valeurs grâce à Python, en effet il me classe les listes comme je veux en fonction de la 3eme colonnes, par contre, il considère que 1.06161E+02 est inférieur à 2.81937E+01. Y'a t-il moyen de remédier à ce problème?
    Merci d'avance

    La fonction utilisée
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    	resu4=[]	
    	resu4=sorted(resu2,key=operator.itemgetter(2,1))
    Voici une partie des résultats, il a mis en premier les valeurs de la 3ème colonnes qui sont logiquement plus grand (10E+2) que les autres, puis il a bien classé le reste (10E+1)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    ['N7', '5.77796E+01', '1.06161E+02', '2.03477E-06', '-2.47116E-05', '2.45369E-01', '2.47975E-01', '-1.51026E-04', '5.17889E-03', '2.47824E-01', '2.45369E-01', '2.52852E-01', '-3.28472E-07', '1.17131E-06', '-3.61217E-07', '-4.08342E-08'],
    ['N24', '6.05642E+01', '1.06161E+02', '1.16714E-06', '-2.47953E-05', '2.36302E-01', '2.41338E-01', '0.00000E+00', '1.04232E-02', '2.41338E-01', '2.36302E-01', '2.51762E-01', '-2.93696E-07', '1.13290E-06', '-3.59659E-07', '-4.20368E-08'],
    ['N23', '6.33487E+01', '1.06161E+02', '3.62421E-07', '-2.48655E-05', '2.30866E-01', '2.37007E-01', '0.00000E+00', '1.28128E-02', '2.37007E-01', '2.30866E-01', '2.49820E-01', '-2.77270E-07', '1.11000E-06', '-3.56886E-07', '-1.59340E-08'], 
    ['N22', '6.61333E+01', '1.06161E+02', '-4.20053E-07', '-2.48649E-05', '2.30720E-01', '2.36898E-01', '0.00000E+00', '1.28985E-02', '2.36898E-01', '2.30720E-01', '2.49797E-01', '-2.76717E-07', '1.10937E-06', '-3.56853E-07', '1.58311E-08'], 
    ['N21', '6.89178E+01', '1.06161E+02', '-1.22385E-06', '-2.47945E-05', '2.36274E-01', '2.41429E-01', '0.00000E+00', '1.06935E-02', '2.41429E-01', '2.36274E-01', '2.52122E-01', '-2.92509E-07', '1.13292E-06', '-3.60175E-07', '4.22192E-08'], 
    ['N14', '7.17024E+01', '1.06161E+02', '-2.09452E-06', '-2.47284E-05', '2.45372E-01', '2.47897E-01', '-1.27736E-04', '5.03357E-03', '2.47769E-01', '2.45372E-01', '2.52675E-01', '-3.29022E-07', '1.17127E-06', '-3.60964E-07', '3.98957E-08'], 
    ['N1', '5.77796E+01', '2.81937E+01', '1.80792E-06', '-1.14776E-04', '2.46567E-01', '2.50022E-01', '-5.83118E-04', '6.56428E-03', '2.49438E-01', '2.46567E-01', '2.55420E-01', '-3.24171E-07', '1.17557E-06', '-3.64885E-07', '6.18027E-08'], 
    ['N3', '6.05642E+01', '2.81937E+01', '9.69691E-07', '-1.14646E-04', '2.33333E-01', '2.39967E-01', '0.00000E+00', '1.39436E-02', '2.39967E-01', '2.33333E-01', '2.53911E-01', '-2.73455E-07', '1.11982E-06', '-3.62730E-07', '6.03732E-08'], 
    ['N4', '6.33487E+01', '2.81937E+01', '2.22940E-07', '-1.14533E-04', '2.25838E-01', '2.34049E-01', '0.00000E+00', '1.74260E-02', '2.34049E-01', '2.25838E-01', '2.51475E-01', '-2.50723E-07', '1.08897E-06', '-3.59250E-07', '2.36191E-08'], 
    ['N5', '6.61333E+01', '2.81937E+01', '-4.84548E-07', '-1.14535E-04', '2.25471E-01', '2.33944E-01', '0.00000E+00', '1.80484E-02', '2.33944E-01', '2.25471E-01', '2.51993E-01', '-2.47617E-07', '1.08759E-06', '-3.59989E-07', '-2.32080E-08'], 
    ['N6', '6.89178E+01', '2.81937E+01', '-1.22406E-06', '-1.14649E-04', '2.32428E-01', '2.39150E-01', '0.00000E+00', '1.41446E-02', '2.39150E-01', '2.32428E-01', '2.53295E-01', '-2.71340E-07', '1.11566E-06', '-3.61849E-07', '-6.00887E-08'], 
    ['N2', '7.17024E+01', '2.81937E+01', '-2.05960E-06', '-1.14788E-04', '2.46273E-01', '2.49628E-01', '-5.31513E-04', '6.40477E-03', '2.49096E-01', '2.46273E-01', '2.54970E-01', '-3.24215E-07', '1.17411E-06', '-3.64242E-07', '-6.12556E-08'], 
    ['N13', '5.77796E+01', '3.93319E+01', '2.29923E-06', '-1.01850E-04', '2.42230E-01', '2.42875E-01', '-5.10838E-04', '7.78172E-04', '2.42364E-01', '2.42230E-01', '2.42631E-01', '-3.44955E-07', '1.15373E-06', '-3.46616E-07', '1.89156E-09'], 
    ['N157', '6.05642E+01', '3.93319E+01', '1.32999E-06', '-1.01915E-04', '2.41574E-01', '2.41363E-01', '-1.68899E-05', '-4.95651E-04', '2.41346E-01', '2.41574E-01', '2.40833E-01', '-3.47244E-07', '1.15002E-06', '-3.44048E-07', '-3.17803E-10'], 
    ['N151', '6.33487E+01', '3.93319E+01', '3.65387E-07', '-1.01951E-04', '2.40438E-01', '2.40120E-01', '6.12309E-05', '-6.72675E-04', '2.40181E-01', '2.40438E-01', '2.39570E-01', '-3.46046E-07', '1.14461E-06', '-3.42243E-07', '1.00424E-10'], 
    ['N145', '6.61333E+01', '3.93319E+01', '-5.97181E-07', '-1.01954E-04', '2.40438E-01', '2.40088E-01', '6.69020E-05', '-7.35200E-04', '2.40155E-01', '2.40438E-01', '2.39487E-01', '-3.46277E-07', '1.14457E-06', '-3.42124E-07', '-6.18224E-11']

  2. #2
    Expert confirmé Avatar de PauseKawa
    Homme Profil pro
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    Juin 2006
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk, maintenance, réseau, système et +
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 725
    Points : 4 005
    Points
    4 005
    Par défaut
    C'est du texte vos données donc '1' < '2'
    Vous devriez les convertir pour arriver au résultat escompté.
    Merci d'utiliser le forum pour les questions techniques.

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2012
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 26
    Points : 24
    Points
    24
    Par défaut
    Merci bien pour ta réponse,
    Pour les convertir, comment dois je faire? sachant que je récupère les données à partir d'un fichier résultat et j'essaye de mieux les organiser via python.
    Merci d avance

  4. #4
    Membre expérimenté
    Profil pro
    Développeur en systèmes embarqués retraité
    Inscrit en
    Mars 2006
    Messages
    946
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2006
    Messages : 946
    Points : 1 351
    Points
    1 351
    Par défaut
    Salut,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    value = float('123.0')
    print type(value), value
    value = int('12345')
    print type(value), value
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    >pythonw -u "dummy.py"         
    <type 'float'> 123.0
    <type 'int'> 12345
    >Exit code: 0
    A+

    Pfeuh

  5. #5
    Expert confirmé Avatar de PauseKawa
    Homme Profil pro
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    Juin 2006
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk, maintenance, réseau, système et +
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 725
    Points : 4 005
    Points
    4 005
    Par défaut
    'Amusant'
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    from decimal import Decimal
    resu2.sort(lambda a, b: cmp(Decimal(a[2]), Decimal(b[2])) or cmp(Decimal(a[1]), Decimal(b[1])))
    Bon ok...

    Petit édit pour le PO quand même:
    Je pense que vous devez être sous Python 3 donc ce code vous est inutile, d’où le Bon ok...
    Sous Python 3.x .sort() n'accepte pas la fonction de comparaison donnée ici par lambda (et même tend a être remplacer complètement par a = b.sorted()). Ce qui est attendu c'est key=valeur.
    De même cmp(Decimal(a[2]), Decimal(b[2])) devrais être (Decimal(a[2]) > Decimal(b[2])) - (Decimal(a[2]) < Decimal(b[2])).
    Pour le 'Amusant' c'est juste que j'aime bien les 'ovni' du style fonction lambda et and/or.

    Ceci dit le module decimal n'est pas une mauvaise idée pour votre tri sans doute:
    [Code Python 2.x]
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    from decimal import Decimal
     
     
    resu2 = [['N7', '5.77796E+01', '1.06161E+02', '2.03477E-06', '-2.47116E-05', '2.45369E-01', '2.47975E-01', '-1.51026E-04', '5.17889E-03', '2.47824E-01', '2.45369E-01', '2.52852E-01', '-3.28472E-07', '1.17131E-06', '-3.61217E-07', '-4.08342E-08'],
    ['N24', '6.05642E+01', '1.06161E+02', '1.16714E-06', '-2.47953E-05', '2.36302E-01', '2.41338E-01', '0.00000E+00', '1.04232E-02', '2.41338E-01', '2.36302E-01', '2.51762E-01', '-2.93696E-07', '1.13290E-06', '-3.59659E-07', '-4.20368E-08'],
    ['N23', '6.33487E+01', '1.06161E+02', '3.62421E-07', '-2.48655E-05', '2.30866E-01', '2.37007E-01', '0.00000E+00', '1.28128E-02', '2.37007E-01', '2.30866E-01', '2.49820E-01', '-2.77270E-07', '1.11000E-06', '-3.56886E-07', '-1.59340E-08'], 
    ['N22', '6.61333E+01', '1.06161E+02', '-4.20053E-07', '-2.48649E-05', '2.30720E-01', '2.36898E-01', '0.00000E+00', '1.28985E-02', '2.36898E-01', '2.30720E-01', '2.49797E-01', '-2.76717E-07', '1.10937E-06', '-3.56853E-07', '1.58311E-08'], 
    ['N21', '6.89178E+01', '1.06161E+02', '-1.22385E-06', '-2.47945E-05', '2.36274E-01', '2.41429E-01', '0.00000E+00', '1.06935E-02', '2.41429E-01', '2.36274E-01', '2.52122E-01', '-2.92509E-07', '1.13292E-06', '-3.60175E-07', '4.22192E-08'], 
    ['N14', '7.17024E+01', '1.06161E+02', '-2.09452E-06', '-2.47284E-05', '2.45372E-01', '2.47897E-01', '-1.27736E-04', '5.03357E-03', '2.47769E-01', '2.45372E-01', '2.52675E-01', '-3.29022E-07', '1.17127E-06', '-3.60964E-07', '3.98957E-08'], 
    ['N1', '5.77796E+01', '2.81937E+01', '1.80792E-06', '-1.14776E-04', '2.46567E-01', '2.50022E-01', '-5.83118E-04', '6.56428E-03', '2.49438E-01', '2.46567E-01', '2.55420E-01', '-3.24171E-07', '1.17557E-06', '-3.64885E-07', '6.18027E-08'], 
    ['N3', '6.05642E+01', '2.81937E+01', '9.69691E-07', '-1.14646E-04', '2.33333E-01', '2.39967E-01', '0.00000E+00', '1.39436E-02', '2.39967E-01', '2.33333E-01', '2.53911E-01', '-2.73455E-07', '1.11982E-06', '-3.62730E-07', '6.03732E-08'], 
    ['N4', '6.33487E+01', '2.81937E+01', '2.22940E-07', '-1.14533E-04', '2.25838E-01', '2.34049E-01', '0.00000E+00', '1.74260E-02', '2.34049E-01', '2.25838E-01', '2.51475E-01', '-2.50723E-07', '1.08897E-06', '-3.59250E-07', '2.36191E-08'], 
    ['N5', '6.61333E+01', '2.81937E+01', '-4.84548E-07', '-1.14535E-04', '2.25471E-01', '2.33944E-01', '0.00000E+00', '1.80484E-02', '2.33944E-01', '2.25471E-01', '2.51993E-01', '-2.47617E-07', '1.08759E-06', '-3.59989E-07', '-2.32080E-08'], 
    ['N6', '6.89178E+01', '2.81937E+01', '-1.22406E-06', '-1.14649E-04', '2.32428E-01', '2.39150E-01', '0.00000E+00', '1.41446E-02', '2.39150E-01', '2.32428E-01', '2.53295E-01', '-2.71340E-07', '1.11566E-06', '-3.61849E-07', '-6.00887E-08'], 
    ['N2', '7.17024E+01', '2.81937E+01', '-2.05960E-06', '-1.14788E-04', '2.46273E-01', '2.49628E-01', '-5.31513E-04', '6.40477E-03', '2.49096E-01', '2.46273E-01', '2.54970E-01', '-3.24215E-07', '1.17411E-06', '-3.64242E-07', '-6.12556E-08'], 
    ['N13', '5.77796E+01', '3.93319E+01', '2.29923E-06', '-1.01850E-04', '2.42230E-01', '2.42875E-01', '-5.10838E-04', '7.78172E-04', '2.42364E-01', '2.42230E-01', '2.42631E-01', '-3.44955E-07', '1.15373E-06', '-3.46616E-07', '1.89156E-09'], 
    ['N157', '6.05642E+01', '3.93319E+01', '1.32999E-06', '-1.01915E-04', '2.41574E-01', '2.41363E-01', '-1.68899E-05', '-4.95651E-04', '2.41346E-01', '2.41574E-01', '2.40833E-01', '-3.47244E-07', '1.15002E-06', '-3.44048E-07', '-3.17803E-10'], 
    ['N151', '6.33487E+01', '3.93319E+01', '3.65387E-07', '-1.01951E-04', '2.40438E-01', '2.40120E-01', '6.12309E-05', '-6.72675E-04', '2.40181E-01', '2.40438E-01', '2.39570E-01', '-3.46046E-07', '1.14461E-06', '-3.42243E-07', '1.00424E-10'], 
    ['N145', '6.61333E+01', '3.93319E+01', '-5.97181E-07', '-1.01954E-04', '2.40438E-01', '2.40088E-01', '6.69020E-05', '-7.35200E-04', '2.40155E-01', '2.40438E-01', '2.39487E-01', '-3.46277E-07', '1.14457E-06', '-3.42124E-07', '-6.18224E-11']]
    resu2.sort(lambda a, b: cmp(Decimal(a[2]), Decimal(b[2])) or cmp(Decimal(a[1]), Decimal(b[1])))
    for elem in resu2:
        print elem
    [out]
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    ['N1', '5.77796E+01', '2.81937E+01', '1.80792E-06', '-1.14776E-04', '2.46567E-01', '2.50022E-01', '-5.83118E-04', '6.56428E-03', '2.49438E-01', '2.46567E-01', '2.55420E-01', '-3.24171E-07', '1.17557E-06', '-3.64885E-07', '6.18027E-08']
    ['N3', '6.05642E+01', '2.81937E+01', '9.69691E-07', '-1.14646E-04', '2.33333E-01', '2.39967E-01', '0.00000E+00', '1.39436E-02', '2.39967E-01', '2.33333E-01', '2.53911E-01', '-2.73455E-07', '1.11982E-06', '-3.62730E-07', '6.03732E-08']
    ['N4', '6.33487E+01', '2.81937E+01', '2.22940E-07', '-1.14533E-04', '2.25838E-01', '2.34049E-01', '0.00000E+00', '1.74260E-02', '2.34049E-01', '2.25838E-01', '2.51475E-01', '-2.50723E-07', '1.08897E-06', '-3.59250E-07', '2.36191E-08']
    ['N5', '6.61333E+01', '2.81937E+01', '-4.84548E-07', '-1.14535E-04', '2.25471E-01', '2.33944E-01', '0.00000E+00', '1.80484E-02', '2.33944E-01', '2.25471E-01', '2.51993E-01', '-2.47617E-07', '1.08759E-06', '-3.59989E-07', '-2.32080E-08']
    ['N6', '6.89178E+01', '2.81937E+01', '-1.22406E-06', '-1.14649E-04', '2.32428E-01', '2.39150E-01', '0.00000E+00', '1.41446E-02', '2.39150E-01', '2.32428E-01', '2.53295E-01', '-2.71340E-07', '1.11566E-06', '-3.61849E-07', '-6.00887E-08']
    ['N2', '7.17024E+01', '2.81937E+01', '-2.05960E-06', '-1.14788E-04', '2.46273E-01', '2.49628E-01', '-5.31513E-04', '6.40477E-03', '2.49096E-01', '2.46273E-01', '2.54970E-01', '-3.24215E-07', '1.17411E-06', '-3.64242E-07', '-6.12556E-08']
    ['N13', '5.77796E+01', '3.93319E+01', '2.29923E-06', '-1.01850E-04', '2.42230E-01', '2.42875E-01', '-5.10838E-04', '7.78172E-04', '2.42364E-01', '2.42230E-01', '2.42631E-01', '-3.44955E-07', '1.15373E-06', '-3.46616E-07', '1.89156E-09']
    ['N157', '6.05642E+01', '3.93319E+01', '1.32999E-06', '-1.01915E-04', '2.41574E-01', '2.41363E-01', '-1.68899E-05', '-4.95651E-04', '2.41346E-01', '2.41574E-01', '2.40833E-01', '-3.47244E-07', '1.15002E-06', '-3.44048E-07', '-3.17803E-10']
    ['N151', '6.33487E+01', '3.93319E+01', '3.65387E-07', '-1.01951E-04', '2.40438E-01', '2.40120E-01', '6.12309E-05', '-6.72675E-04', '2.40181E-01', '2.40438E-01', '2.39570E-01', '-3.46046E-07', '1.14461E-06', '-3.42243E-07', '1.00424E-10']
    ['N145', '6.61333E+01', '3.93319E+01', '-5.97181E-07', '-1.01954E-04', '2.40438E-01', '2.40088E-01', '6.69020E-05', '-7.35200E-04', '2.40155E-01', '2.40438E-01', '2.39487E-01', '-3.46277E-07', '1.14457E-06', '-3.42124E-07', '-6.18224E-11']
    ['N7', '5.77796E+01', '1.06161E+02', '2.03477E-06', '-2.47116E-05', '2.45369E-01', '2.47975E-01', '-1.51026E-04', '5.17889E-03', '2.47824E-01', '2.45369E-01', '2.52852E-01', '-3.28472E-07', '1.17131E-06', '-3.61217E-07', '-4.08342E-08']
    ['N24', '6.05642E+01', '1.06161E+02', '1.16714E-06', '-2.47953E-05', '2.36302E-01', '2.41338E-01', '0.00000E+00', '1.04232E-02', '2.41338E-01', '2.36302E-01', '2.51762E-01', '-2.93696E-07', '1.13290E-06', '-3.59659E-07', '-4.20368E-08']
    ['N23', '6.33487E+01', '1.06161E+02', '3.62421E-07', '-2.48655E-05', '2.30866E-01', '2.37007E-01', '0.00000E+00', '1.28128E-02', '2.37007E-01', '2.30866E-01', '2.49820E-01', '-2.77270E-07', '1.11000E-06', '-3.56886E-07', '-1.59340E-08']
    ['N22', '6.61333E+01', '1.06161E+02', '-4.20053E-07', '-2.48649E-05', '2.30720E-01', '2.36898E-01', '0.00000E+00', '1.28985E-02', '2.36898E-01', '2.30720E-01', '2.49797E-01', '-2.76717E-07', '1.10937E-06', '-3.56853E-07', '1.58311E-08']
    ['N21', '6.89178E+01', '1.06161E+02', '-1.22385E-06', '-2.47945E-05', '2.36274E-01', '2.41429E-01', '0.00000E+00', '1.06935E-02', '2.41429E-01', '2.36274E-01', '2.52122E-01', '-2.92509E-07', '1.13292E-06', '-3.60175E-07', '4.22192E-08']
    ['N14', '7.17024E+01', '1.06161E+02', '-2.09452E-06', '-2.47284E-05', '2.45372E-01', '2.47897E-01', '-1.27736E-04', '5.03357E-03', '2.47769E-01', '2.45372E-01', '2.52675E-01', '-3.29022E-07', '1.17127E-06', '-3.60964E-07', '3.98957E-08']
    Dans l'attente d'une réponse plus pro
    Merci d'utiliser le forum pour les questions techniques.

  6. #6
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 287
    Points : 36 776
    Points
    36 776
    Par défaut
    Salut,

    Pour les convertir, comment dois je faire? sachant que je récupère les données à partir d'un fichier résultat et j'essaye de mieux les organiser via python
    En général, ce sont des fichiers qui se prêtent à une lecture via le module csv ou encore via numpy loadtxt.

    Dans les deux cas, la conversion des float et des int est réalisée automatiquement (modulo certaines conditions mais généralement satisfaites dans les cas "simples").

    Vous pouvez aussi effectuer la conversion "à la main" comme suggéré par mes collègues... Tout dépend de ce que vous comptez faire de ces données "ensuite".

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  7. #7
    Expert confirmé Avatar de PauseKawa
    Homme Profil pro
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    Juin 2006
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk, maintenance, réseau, système et +
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 725
    Points : 4 005
    Points
    4 005
    Par défaut
    Citation Envoyé par wiztricks Voir le message
    Dans les deux cas, la conversion des float et des int est réalisée automatiquement (modulo certaines conditions mais généralement satisfaites dans les cas "simples")
    Ce qui me bloque en fait c'est '5.77796E+01' et sa conversion en int.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    >>> a = 0.000003
    >>> a
    3.0000000000000001e-06
    >>> str(a)
    '3e-06'
    >>> int('3e-06')
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    ValueError: invalid literal for int() with base 10: '3e-06'
    Je dois avouer être dépassé (et ne pas avoir le temps) par cette conversion str(notation scientifique) > int.
    Une explication wiztricks ?
    Merci d'avance
    Merci d'utiliser le forum pour les questions techniques.

  8. #8
    Membre éprouvé

    Homme Profil pro
    Diverses et multiples
    Inscrit en
    Mai 2008
    Messages
    662
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Diverses et multiples

    Informations forums :
    Inscription : Mai 2008
    Messages : 662
    Points : 1 273
    Points
    1 273
    Par défaut
    Ben, c’est pas en int() qu’il faut convertir, mais en float() (comme le suggère pfeuh)*! Int n’accepte que des entiers, sous forme de str, ça me semble assez logique.

  9. #9
    Expert confirmé Avatar de PauseKawa
    Homme Profil pro
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    Juin 2006
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk, maintenance, réseau, système et +
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 725
    Points : 4 005
    Points
    4 005
    Par défaut
    Évident oui, sauf que j'avais exactement la même erreur cet après midi avec un float sur un poste au bureau (xp + Python 2.7): De quoi se raser la tête pour la solution.
    C'est pour cela que j'ai penser à decimal.Decimal.
    @home cela fonctionne sous Python 2/3...
    Merci d'utiliser le forum pour les questions techniques.

  10. #10
    Expert confirmé Avatar de PauseKawa
    Homme Profil pro
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    Juin 2006
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk, maintenance, réseau, système et +
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 725
    Points : 4 005
    Points
    4 005
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    resu4 = sorted(resu2, key=lambda d: (float(d[2]), float(d[1])))
    Merci d'utiliser le forum pour les questions techniques.

  11. #11
    Expert éminent
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    3 823
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 823
    Points : 7 119
    Points
    7 119
    Par défaut
    faut pas oublier les N7, etc... qui pourrissent la liste

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    >>> liste = ['N7', '5.77796E+01', '1.06161E+02', '2.03477E-06']
    >>> liste = [float(i) for i in liste if '.' in i]
    >>> liste
    [57.7796, 106.161, 2.03477e-06]
    Evidemment, si on met sorted(), le résultat sera dans l'ordre croissant.
    Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
    La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)

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

Discussions similaires

  1. Problème avec une fonction date.
    Par kmayoyota dans le forum ASP
    Réponses: 8
    Dernier message: 09/09/2004, 12h33
  2. Problème avec la fonction findfirst ()
    Par Angelico dans le forum Windows
    Réponses: 3
    Dernier message: 05/08/2004, 20h40
  3. [Requete SQL en VBA] Problème avec la fonction FLOOR
    Par zubral dans le forum Langage SQL
    Réponses: 4
    Dernier message: 13/07/2004, 13h24
  4. Problème avec les fonctions
    Par jvachez dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 13/01/2004, 12h06
  5. [Postgresql]Problème avec les fonctions ...
    Par fet dans le forum Requêtes
    Réponses: 4
    Dernier message: 02/10/2003, 09h04

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