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 :

conversion tuple de tuple


Sujet :

Python

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Mai 2011
    Messages
    202
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2011
    Messages : 202
    Points : 33
    Points
    33
    Par défaut conversion tuple de tuple
    bonjour

    j'ai besoin de convertir chaque donnee en notation scientifique

    laval [[124000000000000.0, 125000000000000.0], [1350000000000000.0, 1370000000000000.0]]

    et finalement avoir

    laval [[1.24e+14, 1.25e+14], [1.35e+15, 11.37e+15]]

    y a t il un moyen simple pour realiser cela ?

    j'utilise pour ma conversion la fonction eformat

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    def eformat(f, prec, exp_digits):
        s = "%.*e"%(prec, f)
        mantissa, exp = s.split('e')
        return "%se%+0*d"%(mantissa, exp_digits+1, int(exp))

  2. #2
    Expert éminent
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    3 817
    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 817
    Points : 7 110
    Points
    7 110
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    >>> print('{0:.6e}'.format(124000000000000.0))
    1.240000e+14
    Bonne continuation...
    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)

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Mai 2011
    Messages
    202
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2011
    Messages : 202
    Points : 33
    Points
    33
    Par défaut
    je me suis mal expliqué, ma question portait sur la boucle a realiser

    ici j'ai seulement 4 elements

    je peux avoir d'autre part 2,4,6,8....elements

  4. #4
    Expert éminent
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    3 817
    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 817
    Points : 7 110
    Points
    7 110
    Par défaut
    Eh bien c'est une liste de listes, il faut donc deux boucles

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    >>> for liste in laval:
    ...    for number in liste:
    ...        print('{0:.6e}'.format(number))
    ... 
    1.240000e+14
    1.250000e+14
    1.350000e+15
    1.370000e+15
    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)

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Mai 2011
    Messages
    202
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2011
    Messages : 202
    Points : 33
    Points
    33
    Par défaut
    merci beaucoup, ca marche !

  6. #6
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Mai 2011
    Messages
    202
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2011
    Messages : 202
    Points : 33
    Points
    33
    Par défaut
    une derniere question

    j'ai : [x1, X2, Y1, Y2]

    si je voulais retrouver la structure initiale [[X1, X2], [Y1, Y2]]

  7. #7
    Expert éminent

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 300
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 300
    Points : 6 780
    Points
    6 780
    Par défaut
    Quelque soit le nombre d'éléments de la liste de départ:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    l = [1234, 2345, 3456, 4567, 5678, 7891]
    ll = [[l[x], l[x+1]] for x in range(0, len(l)-1, 2)]

  8. #8
    Expert éminent
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    3 817
    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 817
    Points : 7 110
    Points
    7 110
    Par défaut
    Voilà ma solution,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    >>> liste =  [22, 18, 45, 12]
    >>> if len(liste) % 2 == 0:
    ...     print(
    [liste[i:i+2] for i in range(0, len(liste), 2)])
    ... 
    [[22, 18], [45, 12]]
    Plus propre, et avec les détails

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    >>> liste =  [22, 18, 45, 12]
    >>> length = len(liste)
    >>> if length % 2 == 0:
    ...     print(
    [liste[i:i+2] for i in range(0, length, 2)])
    ... 
    [[22, 18], [45, 12]]
    Mais si on reste cohérent

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    >>> for liste in laval:
    ...     for ind, number in enumerate(liste):
    ...         liste[ind] = '{0:.6e}'.format(number)
    ... 
    >>> laval
    [['1.240000e+14', '1.250000e+14'], ['1.350000e+15', '1.370000e+15']]
    et c'est fini
    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)

  9. #9
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Mai 2011
    Messages
    202
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2011
    Messages : 202
    Points : 33
    Points
    33
    Par défaut
    encore merci pour les solutions !


  10. #10
    Expert éminent
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    3 817
    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 817
    Points : 7 110
    Points
    7 110
    Par défaut
    De rien, n'oublies pas le résolu, si c'est ok

    Edit : Oups c'est fait!
    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)

  11. #11
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2010
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 6
    Points : 16
    Points
    16
    Par défaut
    Salut,

    exemple provenant de la doc python

    http://docs.python.org/2/library/itertools.html

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    from itertools import *
     
    l = [22, 18, 45, 12,11,22,33,44,55,66]
     
    def grouper(iterable, n, fillvalue=None):
        "Collect data into fixed-length chunks or blocks"
        # grouper('ABCDEFG', 3, 'x') --> ABC DEF Gxx
        args = [iter(iterable)] * n
        return izip_longest(fillvalue=fillvalue, *args)
     
    print list(grouper(l,2))
    [(22, 18), (45, 12), (11, 22), (33, 44), (55, 66)]

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

Discussions similaires

  1. Création d'une liste de tuple de tuple
    Par Jiyuu dans le forum Général Python
    Réponses: 2
    Dernier message: 02/09/2008, 07h50
  2. max tuple de tuple
    Par elscorpio dans le forum Général Python
    Réponses: 2
    Dernier message: 17/07/2008, 11h16
  3. Sous-ensembles de tuples
    Par HPJ dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 07/10/2003, 16h24
  4. Selection de tuples
    Par gguivarch dans le forum Requêtes
    Réponses: 2
    Dernier message: 11/07/2003, 15h27
  5. [Crystal Report] problème de plusieurs tuples à imprimer
    Par Jé_48 dans le forum SAP Crystal Reports
    Réponses: 2
    Dernier message: 19/06/2003, 14h40

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