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 :

Fusion de listes en liste de tuple [Python 3.X]


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Homme Profil pro
    Etudiant PSI à Gustave Eiffel
    Inscrit en
    Octobre 2017
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Etudiant PSI à Gustave Eiffel

    Informations forums :
    Inscription : Octobre 2017
    Messages : 3
    Par défaut Fusion de listes en liste de tuple
    Bonjour à vous, c'est la première fois que je poste ici.
    Je veux, à partir de deux listes de tailles identiques, les fusionner en tuple (pour obtenir des coordonnées en quelque sorte) position par position (j'ai un peu du mal à décrire ce que je veux obtenir, alors plutôt qu'un discours, mon programme : )

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    x = [1,3,5,7,9,11,13,15,17,19]
    y = [2,4,6,8,10,12,14,16,18,20]
     
    def tupleliste(L1, L2):
        Ltuple = []
     
        if len(L1) == len(L2):
            for i in L1 and L2:
                Ltuple.append(L1(i),L2(i))
            return Ltuple
     
    print(tupleliste(x, y))
    A la sortie j'obtiens cette erreur :
    Traceback (most recent call last):
    File "C:\Users\...\Desktop\sanstitre1.py", line 28, in <module>
    print(tupleliste(x, y))
    File "C:\Users\...\Desktop\sanstitre1.py", line 25, in tupleliste
    Ltuple.append(L1(i),L2(i))
    TypeError: 'list' object is not callable
    >>>
    Alors qu'avec L1 et L2, je voudrais que Ltuple = [(1,2),(3,4),(5,6),(7,8),(9,10),(11,12),(13,14),(15,16),(17,18),(19,20)]
    Dites moi, s'il vous plaît, ce qui ne va pas dans mon code, ce qui est lourd ou répétitif, les erreurs commises tout en restant à mon niveau (2ème année de prépa, avec 2h d'informatique toutes les 2 semaines). Merci d'avance de votre aide, bonne soirée.

  2. #2
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 743
    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 743
    Par défaut
    Salut,
    Citation Envoyé par ProAxel33 Voir le message
    Alors qu'avec L1 et L2, je voudrais que Ltuple = [(1,2),(3,4),(5,6),(7,8),(9,10),(11,12),(13,14),(15,16),(17,18),(19,20)]
    Avec Python, on peut écrire cela simplement:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    >>> x = [1,3,5,7,9,11,13,15,17,19]
    >>> y = [2,4,6,8,10,12,14,16,18,20]
    >>> list(zip(x, y))
    [(1, 2), (3, 4), (5, 6), (7, 8), (9, 10), (11, 12), (13, 14), (15, 16), (17, 18), (19, 20)]
    Citation Envoyé par ProAxel33 Voir le message
    Dites moi, s'il vous plaît, ce qui ne va pas dans mon code, ce qui est lourd ou répétitif, les erreurs commises tout en restant à mon niveau (2ème année de prépa, avec 2h d'informatique toutes les 2 semaines). Merci d'avance de votre aide, bonne soirée.
    Mais vous devez apprendre boucles et conditions donc... çà serait bien d'y arriver. Relisez votre code quand vous écrivez un truc comme:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
           for i in L1 and L2:
                Ltuple.append(L1(i),L2(i))
    Il faut dire que je ne comprends pas trop ce que çà peut bien faire... mais l'important est de vous assurer que çà fait bien ce que vous attendez. Pour çà, vous avez l'instruction "print":
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
           for i in L1 and L2:
                print(i)
                Ltuple.append(L1(i),L2(i))
    qui devrait vous suggérer que c'est pas çà du tout.

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

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Etudiant PSI à Gustave Eiffel
    Inscrit en
    Octobre 2017
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Etudiant PSI à Gustave Eiffel

    Informations forums :
    Inscription : Octobre 2017
    Messages : 3
    Par défaut
    Merci pour vos conseils !
    Il faut dire que je ne comprends pas trop ce que çà peut bien faire... mais l'important est de vous assurer que çà fait bien ce que vous attendez. "print":
    Je pense que le problème viens de cette première ligne :
    En écrivant cela, j'ai espéré obtenir une boucle qui traverse en même temps les positions de mes deux listes, en quelque sorte parallèlement. Je me doute qu'il existe de nombreuses méthodes (si ce n'est une infinité) qui pourraient très facilement remplacer cette ligne.
    Ensuite la deuxième ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Ltuple.append(L1(i),L2(i))
    Je me demande s'il n'y a pas un problème d'objet ...

    Mon manque d'expérience fait que je ne vois pas très bien comment faire pour ajouter dans ma liste Ltuple à l'aide de boucles (ou peut-être avec un "tant que") la position 0 de L1 et L2, puis la position 1 de L1 et L2 ... jusqu'à la position len(L1) = len(L2).


    EDIT :
    Au final j'ai supprimé ce "for", et remplacé avec deux conditions dans un "tant que" j'y suis parvenu !
    De plus, j'ai remarqué avoir entouré dans la deuxième ligne : L1(i),L2(i) au lieu de L1[i],L2[i], donc je crois bien qu'il y avait un problème d'objets.
    Au cas où, le code final :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    L1 = [1,3,5,7,9,11,13,15,17,19]
    L2 = [2,4,6,8,10,12,14,16,18,20]
     
    def tupleliste(L1, L2):
        Ltuple = []
        i = 0
        if len(L1) == len(L2):
            while i < len(L1) and i < len(L2):
                Ltuple.append((L1[i],L2[i]))
                i += 1
            return Ltuple
     
    print(tupleliste(L1,L2))
    Et le résultat :
    [(1, 2), (3, 4), (5, 6), (7, 8), (9, 10), (11, 12), (13, 14), (15, 16), (17, 18), (19, 20)]

  4. #4
    Expert confirmé
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    4 062
    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 : 4 062
    Par défaut
    Voir du côté de zip

    EDIT: Déjà grillé par wiztrick. Dans la doc, il y a des exemples clairs...

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Etudiant PSI à Gustave Eiffel
    Inscrit en
    Octobre 2017
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Etudiant PSI à Gustave Eiffel

    Informations forums :
    Inscription : Octobre 2017
    Messages : 3
    Par défaut
    En tout cas, merci pour votre aide fred1599 et wiztricks !

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

Discussions similaires

  1. [Toutes versions] PDF Creator & VBA - Fusion de PDF avec liste excel
    Par maxxgraph dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 22/11/2017, 16h58
  2. Tri fusion avec seulement deux listes
    Par CrashBC dans le forum Algorithmes et structures de données
    Réponses: 1
    Dernier message: 04/01/2014, 01h02
  3. Syntaxe élégante pour une fusion de compréhension de liste
    Par sopsag dans le forum Général Python
    Réponses: 8
    Dernier message: 23/08/2010, 12h22
  4. Regrouper une liste en liste de listes
    Par West01 dans le forum Prolog
    Réponses: 12
    Dernier message: 14/03/2008, 14h07
  5. [langage] tri avancé, liste de listes
    Par schnecke dans le forum Langage
    Réponses: 6
    Dernier message: 29/03/2004, 14h00

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