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 :

dico : ajout de valeurs via une boucle for


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    Homme Profil pro
    Amateur débutant
    Inscrit en
    Décembre 2019
    Messages
    88
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Amateur débutant

    Informations forums :
    Inscription : Décembre 2019
    Messages : 88
    Par défaut dico : ajout de valeurs via une boucle for
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    from random import shuffle
     
    def melange(l):
      shuffle(l)
      return l
     
    liste = ['a', 'b', 'c', 'd', 'e']
    dic ={}
    for i in range(3):
      l1 = melange(liste)
      dic[i] = l1
     
    print("dico: ", dic)
    retourne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    ['b', 'd', 'c', 'e', 'a']
    ['d', 'a', 'b', 'c', 'e']
    ['e', 'd', 'b', 'a', 'c']
    dico:  {0: ['e', 'd', 'b', 'a', 'c'], 1: ['e', 'd', 'b', 'a', 'c'], 2: ['e', 'd', 'b', 'a', 'c']}
    Pourquoi c'est la dernière liste de la boucle qui est associée à toutes les clefs?
    Merci

  2. #2
    Membre Expert
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2003
    Messages
    1 603
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2003
    Messages : 1 603
    Par défaut
    Bonjour,

    j'ai corrigé ta fonction melange :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    def melange(l):
        shuffle(l)
        return l.copy()
    En fait, à chaque fois que tu fais un shuffle sur ta liste, l'ordre nouvellement constitué impacte également ta liste. Tu te fais que pointer dessus à chaque passage de la boucle.

    Avec ma modif, cela donne en sortie :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    dico:  {0: ['d', 'e', 'c', 'a', 'b'], 1: ['e', 'b', 'd', 'a', 'c'], 2: ['a', 'c', 'd', 'e', 'b']}

  3. #3
    Membre Expert
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2003
    Messages
    1 603
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2003
    Messages : 1 603
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Python 3.9.6 (tags/v3.9.6:db3ff76, Jun 28 2021, 15:26:21) [MSC v.1929 64 bit (AMD64)] on win32
    Type "help", "copyright", "credits" or "license" for more information.
    >>> foo: list[int] = [1,2,3,4]
    >>> bar: list[int] = foo
    >>> foo
    [1, 2, 3, 4]
    >>> bar
    [1, 2, 3, 4]
    >>> foo.append(5)
    >>> foo
    [1, 2, 3, 4, 5]
    >>> bar
    [1, 2, 3, 4, 5]
    >>>
    Quand tu assignes à une liste le contenu d'une autre liste avec le signe =, tu crées un pointeur sur la liste initiale. Si tu la modifies, tu impactes tes deux listes.

    L'usage de la méthode copy() permet de dupliquer le contenu de la liste initiale à l'instant T et les deux listes vivent leur vie indépendamment l'une de l'autre après.

  4. #4
    Membre actif
    Homme Profil pro
    Amateur débutant
    Inscrit en
    Décembre 2019
    Messages
    88
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Amateur débutant

    Informations forums :
    Inscription : Décembre 2019
    Messages : 88
    Par défaut
    parfait et merci bcp pour les explications.

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

Discussions similaires

  1. Mise à jour progress bar via une boucle for
    Par solo190 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 28/03/2017, 18h33
  2. Enlever une valeur d'une boucle 'for' ?
    Par Xenie dans le forum Général Python
    Réponses: 2
    Dernier message: 13/05/2014, 23h32
  3. stockage de valeur dans une boucle for
    Par magictol53 dans le forum MATLAB
    Réponses: 2
    Dernier message: 17/10/2013, 18h17
  4. [PowerShell] Exécution .cmd via une boucle for
    Par powershell dans le forum Scripts/Batch
    Réponses: 1
    Dernier message: 19/03/2013, 13h48
  5. Sauver valeur d'une boucle for dans un fichier texte
    Par nikob88 dans le forum MATLAB
    Réponses: 8
    Dernier message: 25/05/2012, 15h18

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