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 :

liste de listes


Sujet :

Python

  1. #1
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2014
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2014
    Messages : 54
    Points : 98
    Points
    98
    Par défaut liste de listes


    je cherche à parcourir les éléments d'une liste de listes comme
    mais je ne trouve pas comment parcourir les sous-listes

    j'ai essayé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    for i in l:
        for j in l[i]:
        #... (suite des commandes)
    mais python me renvoie
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    list indices must be integers, not list
    Pourriez-vous m'expliquer pourquoi ça ne marche pas et ce qu'il faut faire à la place SVP ?

    d'avance

  2. #2
    Responsable Arduino et Systèmes Embarqués


    Avatar de f-leb
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2009
    Messages
    12 621
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 12 621
    Points : 56 866
    Points
    56 866
    Billets dans le blog
    40
    Par défaut
    Bonsoir,

    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    for i in l :
       for j in i :

    Autre possibilité selon le besoin :


  3. #3
    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
    Citation Envoyé par bosskev62 Voir le message
    ourriez-vous m'expliquer pourquoi ça ne marche pas ?

    d'avance
    parce que:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    >>> l = [[2, 4], [3, 9]]
    >>> for i in l:
    ...     print i, type(i)
    ... 
    [2, 4] <type 'list'>
    [3, 9] <type 'list'>

  4. #4
    Membre à l'essai
    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2014
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Haute Savoie (Rhône Alpes)

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

    Informations forums :
    Inscription : Juin 2014
    Messages : 11
    Points : 16
    Points
    16
    Par défaut
    Bonjour f-leb,

    Peux-tu expliquer ta deuxième option ?

    Perso, quand j'exécute le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    l = [[0, 1, 2], [0, 1, 2]]
    for i, j in l:
       print j
    j'obtiens un message d'erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ValueError: too many values to unpack
    Par contre, ça marche pour
    Pourquoi ? Que fait ce raccourci syntaxique ?

    (A noter que je suis sous python 2.7 si jamais ça change quelque chose)

  5. #5
    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
    Prend l'habitude de la console pour tester ce genre de choses.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    >>> l = [[0, 1, 2], ['a', 'b', 'c']]
    >>> for i in l:
    ...     print i
    ... 
    [0, 1, 2]
    ['a', 'b', 'c']
    >>> for i, j, k in l:
    ...     print i, j, k
    ... 
    0 1 2
    a b c
    >>>

  6. #6
    Membre à l'essai
    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2014
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Haute Savoie (Rhône Alpes)

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

    Informations forums :
    Inscription : Juin 2014
    Messages : 11
    Points : 16
    Points
    16
    Par défaut
    Merci VinsS.

    J'avais utilisé la console mais je n'avais pas compris le sens de ce sucre syntaxique.
    Et quand on ne comprend pas ce qu'on fait, difficile de comprendre l'erreur... (A posteriori, le message d'erreur de python est plutôt clair )

    Je comprends maintenant que cette écriture permet d'affecter chaque élément de la sous-liste directement dans les variables de boucle, au lieu d'affecter toute la sous-liste.
    Ceci est donc utile seulement si on connaît le nombre d'éléments de la sous-liste, et valide seulement si ce nombre est le même pour toutes les sous-listes.

    Merci pour cette astuce f-leb.

  7. #7
    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,
    Citation Envoyé par PetitChameau Voir le message
    J'avais utilisé la console mais je n'avais pas compris le sens de ce sucre syntaxique.
    Et quand on ne comprend pas ce qu'on fait, difficile de comprendre l'erreur... (A posteriori, le message d'erreur de python est plutôt clair )

    Je comprends maintenant que cette écriture permet d'affecter chaque élément de la sous-liste directement dans les variables de boucle, au lieu d'affecter toute la sous-liste.
    Plus généralement:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    >>> a, b = 1, 2, 3
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    ValueError: too many values to unpack
    >>> a, b = 1, 2
    >>>
    Et ce n'est pas un "sucre syntaxique"

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

Discussions similaires

  1. Regrouper une liste en liste de listes
    Par West01 dans le forum Prolog
    Réponses: 12
    Dernier message: 14/03/2008, 14h07
  2. Liste de liste?
    Par Bethoring dans le forum C++
    Réponses: 4
    Dernier message: 16/11/2005, 18h19
  3. Liste de listes
    Par SteelBox dans le forum Prolog
    Réponses: 5
    Dernier message: 16/10/2005, 16h21
  4. acceder au n iéme element d'une liste std::list
    Par sorari dans le forum SL & STL
    Réponses: 4
    Dernier message: 23/03/2005, 15h21
  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