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 :

ajout dans une liste


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Octobre 2020
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2020
    Messages : 19
    Par défaut ajout dans une liste
    Bonjour,
    je souhaiterais ajouter à ma liste l'opposé des chiffres déjà présent.

    voici le code, mais j'ai une boucle sans fin.

    Merci d'avance pour votre aide

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     L = [3,2,1]
     
    for cle, valeur in enumerate(L):
        if cle < len(L):
            L.append(-valeur)

  2. #2
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 835
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 835
    Billets dans le blog
    1
    Par défaut
    Bonjour
    Citation Envoyé par m01x75 Voir le message
    voici le code, mais j'ai une boucle sans fin.
    On ne modifie jamais une liste sur laquelle on est en train d'itérer. Sinon quoi qu'il arrive, ce sera mauvais. Par exemple comme ici boucle sans fin si la liste s'agrandit au fur et à mesure qu'on boucle dessus.
    • for (cle, valeur) in enumerate(list(L))
    • for (cle, valeur) in enumerate(L.copy())
    • for (cle, valeur) in enumerate(L[:])

    => Boucle sur copie de L (avec une préférence pour list() qui, d'après divers tests de perfs, me semble plus rapide que les deux autres). Et éventuellement for (cle, valeur) in enumerate(tuple(L)) vu que la copie créée n'a pas pour vocation d'être modifiée.

    Accessoirement, je ne pige pas le test if cle < len(L) vu que enumerate() te donnera obligatoirement des indices allant de 0 inclus à len(L) exclu. Ce qui remet alors en question l'utilité de "clef" et de là de enumerate().
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  3. #3
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Octobre 2020
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2020
    Messages : 19
    Par défaut
    Merci pour ta réponse, je comprends mieux maintenant!

  4. #4
    Membre Expert
    Avatar de Pyramidev
    Homme Profil pro
    Tech Lead
    Inscrit en
    Avril 2016
    Messages
    1 513
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Tech Lead

    Informations forums :
    Inscription : Avril 2016
    Messages : 1 513
    Par défaut
    Bonjour,

    Il est possible d'itérer sur les indices d'une liste qui grossit en cours de route, de cette manière :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    L = [3,2,1]
    for index in range(len(L)):
        L.append(-L[index])
    Ce code équivaut à :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    L = [3,2,1]
    length = len(L)  # vaut 3
    iterable = range(length)  # vaut range(3)
    for index in iterable:  # donc index va bien de 0 à 2
        L.append(-L[index])  # même si la liste grandit en cours d'itération
    À part ça, dans la suite de l'apprentissage, une fois qu'on connaît les listes en compréhension, on peut directement écrire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    L = [3,2,1]
    L += [-x for x in L]

Discussions similaires

  1. Réponses: 3
    Dernier message: 26/08/2006, 14h03
  2. Ajout dans une liste déroulante
    Par auriolbeach dans le forum Access
    Réponses: 5
    Dernier message: 16/02/2006, 05h37
  3. Ajout dans une liste avec un bouton
    Par Invité dans le forum Access
    Réponses: 6
    Dernier message: 07/12/2005, 08h27
  4. Ajout dans une liste/vérification
    Par illight dans le forum Access
    Réponses: 1
    Dernier message: 11/10/2005, 17h12
  5. [LG]probleme d'ajout dans une liste chainée...
    Par misteryann dans le forum Langage
    Réponses: 5
    Dernier message: 08/03/2004, 20h28

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