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 :

gestion des listes avec un for x in L pour avoir la position d'un certain x


Sujet :

Python

  1. #1
    Membre régulier
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2010
    Messages
    406
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hautes Pyrénées (Midi Pyrénées)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2010
    Messages : 406
    Points : 92
    Points
    92
    Par défaut gestion des listes avec un for x in L pour avoir la position d'un certain x
    bonjour à tous
    j'ai écrit ceci qui marche :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    def min(L):
        m=L[1]
        n=len(L)
        ii=0
        for i in range(n):
            x=L[i]
            if (x<m):
                m=x
                ii=i
        return([m,ii])
    et ceci qui renvoie des valeurs aléatoires pour le rang du minimum :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    def minbis(L):
        m=L[0]
        ii=0
        for i in L:
            if (i<m):
                m=i
            ii+=1
        return([m,ii])
    je me doute qu'un for x in L ne doit pas lire les éléments de la liste L dans l'ordre qu'on attend mais je me demandais s'il était possible de savoir comment Python parcourt L quand on fait un for x in L

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 281
    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 281
    Points : 36 768
    Points
    36 768
    Par défaut
    Salut,

    Citation Envoyé par elodouwen Voir le message
    je me doute qu'un for x in L ne doit pas lire les éléments de la liste L dans l'ordre qu'on attend mais je me demandais s'il était possible de savoir comment Python parcourt L quand on fait un for x in L
    équivaut à:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    for i in range(len(L)):
         x = L[i]
         ...
    Pour ce genre de questions, la console Python est votre amie:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    >>> L = [1, 2, 3]
    >>> for x in L:
    ...     print(x)
    ...
    1
    2
    3
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Membre régulier
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2010
    Messages
    406
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hautes Pyrénées (Midi Pyrénées)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2010
    Messages : 406
    Points : 92
    Points
    92
    Par défaut
    ok j'ai parlé trop vite... tout marche bien, merci d'avoir répondu !

  4. #4
    Membre éprouvé
    Homme Profil pro
    Aucune activité
    Inscrit en
    Novembre 2011
    Messages
    505
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Aucune activité

    Informations forums :
    Inscription : Novembre 2011
    Messages : 505
    Points : 926
    Points
    926
    Par défaut
    Bonjour,
    Une fonction très utile est la fonction "enumerate" qui renvoie l'index et l'élément d'un itérable:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    >>> print(*enumerate([8, 9, 1]))
    (0, 8) (1, 9) (2, 1)
    >>>
    D'où la possibilité de raccourcir le script:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    # cration d'une liste aléatoire
    from random import shuffle
    lst = list(range(10))
    shuffle(lst)
    print(lst)
     
    # recherche du minimum et de sa position
    mini = lst[0], 0
    for ind, elem in enumerate(lst):
        if (elem, ind) < mini:
            mini = elem, ind
    print("valeur minimale {}, index {}".format(*mini))
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    [7, 0, 1, 6, 5, 4, 2, 9, 8, 3]
    valeur minimale 0, index 1
    >>>
    Clodion

  5. #5
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 281
    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 281
    Points : 36 768
    Points
    36 768
    Par défaut
    Salut,

    Si le but de l'exercice est d'améliorer la fonction "min" pour qu'elle retourne index et valeur, çà peut se faire en une seule ligne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    >>> import operator
    >>> from random import shuffle
    >>> L = list(range(10))
    >>> shuffle(L)
    >>> min(enumerate(L), key=operator.itemgetter(1))
    (9, 0)
    >>>
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  6. #6
    Membre régulier
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2010
    Messages
    406
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hautes Pyrénées (Midi Pyrénées)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2010
    Messages : 406
    Points : 92
    Points
    92
    Par défaut
    merci à vous pour toutes ces réponses
    ça ma permis entre autres de plonger dans les Enumerate, et, avec ça, de plonger dans l'univers des tuple
    par contre j'ai pas trop eu le temps de chercher des infos sur le :vinz

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 25/02/2013, 11h59
  2. Labirynthe avec gestion des listes par lionceau
    Par forum dans le forum Télécharger
    Réponses: 0
    Dernier message: 23/05/2011, 10h33
  3. Gestion des transactions avec les composants DOA
    Par lper dans le forum Bases de données
    Réponses: 2
    Dernier message: 01/12/2008, 16h06
  4. Class de gestion des images avec rotation
    Par Johnny Boy dans le forum MFC
    Réponses: 1
    Dernier message: 03/05/2005, 11h54
  5. [servlet] gestion des listes d'erreurs ?
    Par MatMeuh dans le forum Servlets/JSP
    Réponses: 8
    Dernier message: 27/10/2004, 10h19

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