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 et fonction enumerate


Sujet :

Python

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Enseignant
    Inscrit en
    Mai 2013
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2013
    Messages : 12
    Points : 6
    Points
    6
    Par défaut liste et fonction enumerate
    Bonjour,

    Je ne comprends pas le comportement de enumerate.
    voici une copie de l'interpréteur (l'indentation n'apparaît pas à l'affichage du message)
    >>> list=["a","b","c"]
    >>> e_list=enumerate(list)
    >>> for i,j in e_list:
    print(i,j)


    0 a
    1 b
    2 c
    >>> for i,j in e_list:
    print(i,j)


    >>>
    Pourquoi lors du deuxième appel, l'interpréteur n'affiche rien ?

    D'avance merci pour votre aide,
    SB

  2. #2
    Expert éminent
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 470
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4 470
    Points : 9 264
    Points
    9 264
    Billets dans le blog
    6
    Par défaut
    Bonjour,

    Parce que enumerate(list) est un itérateur qui a épuisé son comptage lors de la 1ère boucle. Il faudrait donc relancer "e_list=enumerate(liste)" avant la 2e boucle, et celle-ci se déroulerait correctement.

    Le pb n'existe plus si on fait (ce que je conseille):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    for i,j in enumerate(liste):
        print(i,j)
    Par ailleurs, ce n'est pas une bonne idée de nommer une variable avec un nom de type comme "list": cela peut donner des bugs difficiles à trouver.
    Un expert est une personne qui a fait toutes les erreurs qui peuvent être faites, dans un domaine étroit... (Niels Bohr)
    Mes recettes python: http://www.jpvweb.com

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Enseignant
    Inscrit en
    Mai 2013
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2013
    Messages : 12
    Points : 6
    Points
    6
    Par défaut
    Merci,

    j'utilise Python depuis quelques années en bidouillant. Maintenant j'essaie d'approfondir et d'avoir une bonne compréhension d'ensemble du langage.
    Je fais donc des petits tests, d'où un code qui vous est maladroit.

    Je note itérateur dans ma petite tête, je n'ai pas encore vue cette notion qui doit être différente d'une boucle. Sans doute une histoire d'objet, sujet que j'aborde en parallèle, passionnant mais ardu.

    SB

  4. #4
    Expert éminent
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    3 839
    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 839
    Points : 7 145
    Points
    7 145
    Par défaut
    En fait enumerate est un générateur, on peut reproduire un code similaire assez facilement.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    >>> def enumerate(liste):
    ...     for i in range(len(liste)):
    ...         yield i, liste[i]
    ... 
    >>> for i, j in enumerate(["a", "b", "c"]):
    ...     print i, j
    ... 
    0 a
    1 b
    2 c
    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)

Discussions similaires

  1. Réponses: 2
    Dernier message: 04/08/2005, 11h16
  2. [interbase6]liste en fonction d'un dbgrid
    Par macadam314 dans le forum Bases de données
    Réponses: 12
    Dernier message: 01/03/2005, 09h43
  3. Liste de Fonction DirectX
    Par naejg dans le forum DirectX
    Réponses: 6
    Dernier message: 30/03/2004, 15h12
  4. Liste des fonctions
    Par Mookie dans le forum C
    Réponses: 2
    Dernier message: 22/09/2003, 16h42
  5. [postgreSQL] liste de fonctions
    Par Dra_Gun dans le forum Requêtes
    Réponses: 2
    Dernier message: 17/01/2003, 16h13

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