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 :

Travail sur une liste [Python 2.X]


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2015
    Messages
    90
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2015
    Messages : 90
    Par défaut Travail sur une liste
    Bonjour,

    j'ai une liste sous cette forme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    listGlobal = [('VAR_BEN_SCL', '20'), ('VAR_BEN_NAI', '270900'),('VAR_BEN_SCL', '19'), ('VAR_BEN_NAI', '270800'),('VAR_BEN_SCL', '20'), ('VAR_BEN_NAI', '031202')]
    J'aimerais créer une nouvelle liste à partir de VAR_BEN_SCL et VAR_BEN_NAI (concaténation).

    Ex : [('VAR_BEN_SCL', '20'), ('VAR_BEN_NAI', '270900'),('VAR_BEN_SCL', '19'), ('VAR_BEN_NAI', '270800'),('VAR_BEN_SCL', '20'), ('VAR_BEN_NAI', '031202')]
    j'aimerais obtenir => listDTN = ['27092000', '27081900', '03122002']

    Comment procéder ? est-ce possible ?

    Merci pour vos pistes et retours.

    Cdt,

  2. #2
    Membre expérimenté Avatar de zancrows
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2016
    Messages
    159
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2016
    Messages : 159
    Par défaut
    Bonjour,

    oui c'est possible après il serait plus simple si la première liste était divisée en deux.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    VAR_BEN_SCL = ['20', '19', '20']
    VAR_BEN_NAI = ['270900', '270800', '031202']
     
    for i in zip(VAR_BEN_SCL, VAR_BEN_NAI):
        # faire la concaténation et à ajouter à la nouvelle liste ici
    Est-ce une contrainte ?
    Quelle est la règle de concaténation ?

  3. #3
    Membre éprouvé Avatar de olivier1969
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Novembre 2013
    Messages
    153
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Novembre 2013
    Messages : 153
    Par défaut
    Hello,

    Si je te suis bien c'est ça que tu appelles concaténer ? ( avec les couleurs )

    Ex : [('VAR_BEN_SCL', '20'), ('VAR_BEN_NAI', '270900'),('VAR_BEN_SCL', '19'), ('VAR_BEN_NAI', '270800'),('VAR_BEN_SCL', '20'), ('VAR_BEN_NAI', '031202')]
    j'aimerais obtenir => listDTN = ['27092000', '27081900', '03122002']

    si a =
    [('VAR_BEN_SCL', '20'), ('VAR_BEN_NAI', '270900'),('VAR_BEN_SCL', '19'), ('VAR_BEN_NAI', '270800'),('VAR_BEN_SCL', '20'), ('VAR_BEN_NAI', '031202')]

    tu parcours ta liste en lisant les valeurs 2 à 2

    tu lis a[x][1] et a[x+1][1] puis tu découpes les chaines et les concatènes pour obtenir le résultat voulu

    c et d etant tes deux chaines : c[:4] + d + c[-2:] est ton résultat ..... à peu près , je te laisse écrire le code correct

  4. #4
    Membre éprouvé Avatar de olivier1969
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Novembre 2013
    Messages
    153
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Novembre 2013
    Messages : 153
    Par défaut
    Du coup :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    listDTN = []
    a=0
    listGlobal = [('VAR_BEN_SCL', '20'), ('VAR_BEN_NAI', '270900'),('VAR_BEN_SCL', '19'), ('VAR_BEN_NAI', '270800'),('VAR_BEN_SCL', '20'), ('VAR_BEN_NAI', '031202')]
    while a < len(listGlobal) :
        listDTN.append(listGlobal[a+1][1][:4] + listGlobal[a][1] + listGlobal[a+1][1][-2:])
        a = a + 2
     
     
    >>> print listDTN
    ['27092000', '27081900', '03122002']

    En supposant que ta liste est toujours "bien formatée" , sinon il faudra rajouter des contrôles sur les valeurs.

  5. #5
    Membre Expert

    Homme Profil pro
    Ingénieur calcul scientifique
    Inscrit en
    Mars 2013
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur calcul scientifique

    Informations forums :
    Inscription : Mars 2013
    Messages : 1 229
    Par défaut
    Et si elle ne l'est pas (bien formatée) :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    listDTN = []
    listGlobal = [('VAR_BEN_SCL', '20'), ('VAR_BEN_NAI', '270900'),('VAR_BEN_SCL', '19'), ('VAR_BEN_NAI', '270800'),('VAR_BEN_SCL', '20'), ('VAR_BEN_NAI', '031202')]
    for elem in listGlobal :
        if elem[0] == 'VAR_BEN_NAI' :
               listDTN.append(elem[1])
    ce qui peut se raccourcir ainsi
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    listGlobal = [('VAR_BEN_SCL', '20'), ('VAR_BEN_NAI', '270900'),('VAR_BEN_SCL', '19'), ('VAR_BEN_NAI', '270800'),('VAR_BEN_SCL', '20'), ('VAR_BEN_NAI', '031202')]
    listDTN = [ elem[1] for elem in listGlobal if elem[0] == 'VAR_BEN_NAI' ]

  6. #6
    Expert confirmé Avatar de BufferBob
    Profil pro
    responsable R&D vidage de truites
    Inscrit en
    Novembre 2010
    Messages
    3 041
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : responsable R&D vidage de truites

    Informations forums :
    Inscription : Novembre 2010
    Messages : 3 041
    Par défaut
    Citation Envoyé par lg_53 Voir le message
    (...)
    t'as oublié la concaténation des valeurs deux à deux entre les NAI et les SCL, ce qui justement pourrait créer un désalignement si un seul tuple manque/est en trop dans listeGlobal

    une solution cracra comme on les aime parmi d'autres :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    >>> listGlobal = [('VAR_BEN_SCL', '20'), ('VAR_BEN_NAI', '270900'),('VAR_BEN_SCL', '19'), ('VAR_BEN_NAI', '270800'),('VAR_BEN_SCL', '20'), ('VAR_BEN_NAI', '031202')]
    >>> listeDTN = [ i[0:4] + j + i[4:] for i,j in zip(
    ...    [j for i,j in listGlobal if i == 'VAR_BEN_NAI'],
    ...    [j for i,j in listGlobal if i == 'VAR_BEN_SCL'] )]
    >>> listeDTN
    ['27092000', '27081900', '03122002']

  7. #7
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2015
    Messages
    90
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2015
    Messages : 90
    Par défaut
    Bonjour,

    désolé de répondre qu'aujourd'hui, j'étais sur un autre sujet hier.

    Je vais tester vos différents retour et je vous tiens au courant dans la journée.

    Merci beaucoup.

    @+ tard.

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

Discussions similaires

  1. [Débutant] Travailler sur une liste d'images
    Par medsyorick dans le forum Images
    Réponses: 1
    Dernier message: 17/07/2013, 17h13
  2. [Procédure stockée] Comment travailler sur une liste de ...
    Par WwiloO dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 13/02/2006, 11h22
  3. Selectionnet tous ou faire un clear sur une liste
    Par Canou dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 17/11/2004, 10h26
  4. Travailler sur une date
    Par HqX dans le forum Langage SQL
    Réponses: 11
    Dernier message: 05/10/2004, 15h54
  5. [Débutant][jsp] évènement sur une liste
    Par phoebe dans le forum Servlets/JSP
    Réponses: 5
    Dernier message: 14/05/2004, 10h53

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